通过virtualenv使用不同的Python版本

2024-11-21 08:33:00
admin
原创
37
摘要:问题描述:如何为指定版本的 Python 创建虚拟环境?解决方案 1:注意:对于Python 3.3+,请参见下面的 Aelfinn 的回答。创建虚拟环境实例时使用--python(或短-p)选项指定要使用的 Python 可执行文件,例如:virtualenv --python="/usr/bin...

问题描述:

如何为指定版本的 Python 创建虚拟环境?


解决方案 1:

注意:对于Python 3.3+,请参见下面的 Aelfinn 的回答。


创建虚拟环境实例时使用--python(或短-p)选项指定要使用的 Python 可执行文件,例如:

virtualenv --python="/usr/bin/python2.6" "/path/to/new/virtualenv/"

解决方案 2:

从 Python 3.3 开始,文档建议使用 stdlib 创建虚拟环境:

python3 -m venv "my_env_name"

另外,如果我们想要一个特定的 Python 版本,比如说 3.6,那么我们可以使用

python3.6 -m venv "my_env_name"

确保与现有系统 Python 一起安装引用的 Python 版本。

解决方案 3:

有一个更简单的方法,

virtualenv venv --python=python2.7

感谢一条评论,仅当您在系统级安装了 python2.7(例如 /usr/bin/python2.7)时,这才有效。

否则,如果您使用 homebrew,您可以使用路径来获得您想要的内容。

virtualenv venv --python=/usr/local/bin/python

which python您可以使用(Linux) 或py -0p(Windows)找到 Python 安装的路径

这也适用于 Python 3。

which python3
>> /usr/local/bin/python3
virtualenv venv --python=/usr/local/bin/python3

最终浓缩为:

virtualenv venv -p `which python`
virtualenv venv -p `which python3`

解决方案 4:

venv当您在共享托管环境中并且需要从源代码安装和编译 Python,然后从您的 Python 版本创建时,您可以遵循以下步骤。对于 Python 2.7.9。您可以按照以下步骤操作:

mkdir ~/src
wget http://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
tar -zxvf Python-2.7.9.tgz
cd Python-2.7.9
mkdir ~/.localpython
./configure --prefix=$HOME/.localpython
make
make install

虚拟环境

cd ~/src
wget https://pypi.python.org/packages/5c/79/5dae7494b9f5ed061cff9a8ab8d6e1f02db352f3facf907d9eb614fb80e9/virtualenv-15.0.2.tar.gz#md5=0ed59863994daf1292827ffdbba80a63
tar -zxvf virtualenv-15.0.2.tar.gz
cd virtualenv-15.0.2/
~/.localpython/bin/python setup.py install
virtualenv ve -p $HOME/.localpython/bin/python2.7
source ve/bin/activate   

当然,这可以适用于您想要复制工作和部署的精确环境的任何情况。

解决方案 5:

virtualenv --python=/usr/bin/python2.6 <path/to/myvirtualenv>

解决方案 6:

对于我来说,在 Windows 下这是可行的:

virtualenv --python=c:Python25python.exe envname

没有python.exe我得到的,WindowsError: [Error 5] Access is denied
我已经安装了 Python2.7.1 和 virtualenv 1.6.1,而我想要 python 2.5.2。

解决方案 7:

[2019 年 11 月] 我需要在基于 Python 3.8 的 Arch Linux 系统上安装 Python 3.7 环境 (env)。系统上不再有 Python 3.7,因此我无法降级 Python 来安装所需的软件包。

此外,我想在虚拟环境 (venv) 中使用该包/Python 3.7。这就是我的做法。


下载Python版本源文件:

我从以下网址下载了 Python 3.7.4 源文件

https://www.python.org/downloads/source/

/mnt/Vancouver/apps/python_versions/src/Python-3.7.4.tgz

然后我将该档案(源文件)提取到

/mnt/Vancouver/apps/python_versions/src/Python-3.7.4/


安装:

[注意:在我的系统环境中,不是 venv。]

cd /mnt/Vancouver/apps/python_versions/src/Python-3.7.4/
time ./configure                 ## 17 sec
time make                        ## 1 min 51 sec
time sudo make install           ## 18 sec
time make clean                  ## 0.3 sec

检查已安装的 Python 版本:

$ which python
/usr/bin/python

$ python --version
Python 3.8.0

$ which python3.7
/usr/local/bin/python3.7

$ python    ## Python 3.8 [system / env]
Python 3.8.0 (default, Oct 23 2019, 18:51:26) 
[GCC 9.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

$ python3.7    ## newly-installed Python 3.7 package
Python 3.7.4 (default, Nov 20 2019, 11:36:53) 
[GCC 9.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.version)
3.7.4 (default, Nov 20 2019, 11:36:53) 
[GCC 9.2.0]
>>>

$ python3.7 --version                                                                                                 
Python 3.7.4

如何为特定的 Python 版本创建 venv:

https://docs.python.org/3/tutorial/venv.html

12.2. 创建虚拟环境

用于创建和管理虚拟环境的模块称为venvvenv通常会安装您可用的最新版本的 Python。如果您的系统上有多个版本的 Python,您可以通过运行 python3 或您想要的任何版本来选择特定的 Python 版本。

要创建虚拟环境,请确定放置它的目录,然后使用以下目录路径将 venv 模块作为脚本运行:

python3 -m venv tutorial-env

如果目录不存在,这将创建该tutorial-env目录,并且在其中创建包含 Python 解释器、标准库和各种支持文件的副本的目录。...


创建 Python 3.7 venv [在 Python 3.8 操作环境/系统上]:

python3.7 -m venv ~/venv/py3.7      ## create Python 3.7-based venv
source ~/venv/py3.7/bin/activate    ## activate that venv
deactivate                          ## deactivate that venv (when done, there)

已添加到~/.bashrc

alias p37='echo "   [Python 3.7 venv (source ~/venv/py3.7/bin/activate)]" && source ~/venv/py3.7/bin/activate'

测试 Python 3.7 venv:

$ p37                                                                                                                 
[Python 3.7 venv (source ~/venv/py3.7/bin/activate)]

(py3.7)$ python --version
Python 3.7.4

(py3.7)$ python
Python 3.7.4 (default, Nov 20 2019, 11:36:53) 
[GCC 9.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.version)
3.7.4 (default, Nov 20 2019, 11:36:53) 
[GCC 9.2.0] 
>>>

解决方案 8:

Mac OSX 10.6.8 (雪豹):

1) 当你执行 时pip install virtualenv,pip 命令将与你的某个 Python 版本相关联,并virtualenv安装到该版本的 Python 中。你可以这样做

 $ which pip   

查看 Python 的版本。如果你看到类似以下内容的内容:

 $ which pip
 /usr/local/bin/pip

然后执行:

$ ls -al /usr/local/bin/pip
lrwxrwxr-x  1 root  admin  65 Apr 10  2015 /usr/local/bin/pip ->
../../../Library/Frameworks/Python.framework/Versions/2.7/bin/pip

您可以在输出中看到 python 版本。

默认情况下,这将是您创建的任何新环境所使用的 Python 版本。但是,您可以指定计算机上安装的任何 Python 版本,以便在新环境中使用-p flag

$ virtualenv -p python3.2 my_env  
Running virtualenv with interpreter /usr/local/bin/python3.2  
New python executable in my_env/bin/python  
Installing setuptools, pip...done.  

virtualenv my_env将在当前目录中创建一个文件夹,其中包含 Python 可执行文件和 pip [命令] 的副本,您可以使用它来安装其他包。

http://docs.python-guide.org/en/latest/dev/virtualenvs/

virtualenv只需将 python 从计算机上的某个位置复制到新创建的 my_env/bin/ 目录中。

2)系统python在/usr/bin,而我安装的各个python版本默认安装到:

 /usr/local/bin

3)我安装的各种python都有类似python2.7或 这样的名称python3.2,我可以使用这些名称而不是完整路径。

=========虚拟环境包装器==========

1) 我在使用 virtualenvwrapper 时遇到了一些问题。这是我最终输入的内容~/.bash_profile

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/django_projects  #Not very important -- mkproject command uses this
#Added the following based on: 
#http://stackoverflow.com/questions/19665327/virtualenvwrapper-installation-snow-leopard-python
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python2.7 
#source /usr/local/bin/virtualenvwrapper.sh
source /Library/Frameworks/Python.framework/Versions/2.7/bin/virtualenvwrapper.sh

2)-p option与virtualenvwrapper的工作方式不同:我必须指定在新环境中使用的python解释器的完整路径(当我不想使用默认的python版本时):

$ mkvirtualenv -p /usr/local/bin/python3.2 my_env
Running virtualenv with interpreter /usr/local/bin/python3
New python executable in my_env/bin/python
Installing setuptools, pip...done.
Usage: source deactivate

removes the 'bin' directory of the environment activated with 'source
activate' from PATH. 

与 virtualenv 不同,virtualenvwrapper 将在 $WORKON_HOME 环境变量指定的位置创建环境。这样可以将所有环境保存在一个位置。

解决方案 9:

假设您目前在虚拟环境中安装了 Python 2.7。但想要使用python3.2,您必须使用以下命令进行更新:

$ virtualenv --python=/usr/bin/python3.2 name_of_your_virtualenv

然后通过以下方式激活你的虚拟环境

$ source activate name_of_your_virtualenv

然后python --version在 shell 中执行:检查你的版本是否已更新。

解决方案 10:

你应该已经安装了该版本的 Python。如果你已经安装了,那么基本上,

使用虚拟环境,

virtualenv --python=python3.8 env/place/you/want/to/save/to

使用 venv

python3.8 -m venv env/place/you/want/to/save/to

以上示例针对的是python3.8,您可以将其更改为具有不同版本的虚拟环境,只要它们安装在您的计算机上即可。

解决方案 11:

这两个命令应该可以正常工作。

virtualenv -p python2 myenv (适用于 python2)

virtualenv -p python3 myenv (适用于 Python3)

解决方案 12:

你可以virtualenv使用你想要的 Python 版本来调用。例如:

python3 -m virtualenv venv

或者直接指向你的虚拟环境路径。例如对于 Windows:

c:Python34Scriptsirtualenv.exe venv

并运行:

venv/bin/python

Python 3.5.1 (v3.5.1:37a07cee5969, Dec  5 2015, 21:12:44) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

您可以看到虚拟环境中安装的python版本

解决方案 13:

在 2024 年的 macOS 上;使用 pyenv 时:

brew install pyenv

..并按照安装后说明设置 pyenv,请参阅;https://github.com/pyenv/pyenv? tab=readme-ov-file#unixmacos

基本上就是在你的~/.bashrc~/.zshrc文件中添加这些行:

export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv virtualenv-init -)"

安装你喜欢的 Python 版本,例如3.11.6

pyenv install 3.11.6

现在,您可以在项目的同一目录中创建一个新的 python 虚拟环境,如下所示:

~/.pyenv/versions/3.11.6/bin/python -m venv name-of-your-venv

激活环境:

source name-of-your-venv/bin/activate

检查此 python 环境中活动的 python 版本:

(venv) python --version

停用环境:

(venv) deactivate

清理环境:

只需删除名为 python env 的文件夹,因此在这种情况下:

rm -rf name-of-your-venv

不要在 git 中提交你的虚拟环境。为确保万无一失,请将其添加到你的.gitignore文件中:

name-of-your-venv/

另外,请确保不要使用此文件夹来扫描 linting、测试、覆盖率,因为它会减慢这些过程。因此,在用于blacklinting、isort对导入进行排序、pytest单元测试和poetry管理依赖项的 Python 项目中,pyproject.toml文件将包含以下内容:

[tool.pytest.ini_options]
norecursedirs = [".git", "name-of-your-venv"]

[tool.black]
exclude = ".git|name-of-your-venv"

[tool.isort]
skip = [".git", "name-of-your-venv"]

一个好的做法是命名你的虚拟环境venv.venv

解决方案 14:

这种-p方法效果很好,但你每次都要记住使用它。如果你的目标是切换到较新版本的 Python,那么这很麻烦,也可能导致错误。

另一个选择是设置一个与 相同的环境变量。通过文件或管理登录会话的环境变量的任何位置-p进行设置:~/.bashrc

export VIRTUALENV_PYTHON=/path/to/desired/version

然后,virtualenv当您未-p在命令行中指定时,将使用它。

解决方案 15:

在 Mac 上,我使用 pyenv 和 virtualenvwrapper。我必须创建一个新的虚拟环境。你需要 homebrew,如果你使用的是 Mac,我假设你已经安装了它,但只是为了好玩:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"


brew install pyenv
pyenv install 2.7.10
pyenv global 2.7.10
export PATH=/Users/{USERNAME}/.pyenv/versions/2.7.10/bin:$PATH
mkvirtualenv -p ~/.pyenv/versions/2.7.10/bin/python  {virtual_env_name}

我还首先冻结了我的要求,以便我可以简单地在新的虚拟环境中重新安装:

pip install -r requirements.txt

解决方案 16:

更简单的是,通过使用命令替换来找到 python2:

virtualenv -p $(which python2) <path/to/new/virtualenv/>

或者使用 virtualenvwrapper 时:

mkvirtualenv -p $(which python2) <env_name>

解决方案 17:

在 Windows 上:

py -3.4x32 -m venv venv34

或者

py -2.6.2 -m venv venv26

这将使用py启动器为您找到正确的 python 可执行文件(假设您已安装它)。

解决方案 18:

对于 Windows 来说,这些似乎有点过于复杂。如果您在运行 Python 3.3 或更高版本的 Windows 上,则可以使用 Python 启动器py更轻松地执行此操作。只需安装不同的 Python 版本,然后运行:

py -[my version] -m venv env

env这将在当前目录中使用 python创建一个名为的虚拟环境[my version]。例如:

py -3.7 -m venv env
./env/Scripts/activate

这将创建一个名为 using python3.7 的虚拟环境env并激活它。无需路径或其他复杂的东西。

解决方案 19:

正如在多个答案中提到的那样,使用virtualenv是一个干净的解决方案。但是每个人都应该注意的一个小陷阱是,如果在bash_aliases中设置了 python 的别名,例如:

python=python3.6

此别名也将在虚拟环境中使用。因此,在这种情况下,无论使用什么解释器创建环境,python -V在虚拟环境中运行都将始终输出:3.6

virtualenv venv --python=pythonX.X

解决方案 20:

对于 Mac(High Sierra),在 python3 上安装虚拟环境并为 python2 创建一个虚拟环境:

 $ python3 -m pip install virtualenv
 $ python3 -m virtualenv --python=python2 vp27
 $ source vp27/bin/activate
 (vp27)$ python --version
 Python 2.7.14

解决方案 21:

我在 Windows 上使用了此解决方案

https://stackoverflow.com/a/22793687/15435022

py -3.4 -m venv c:path    owhereveryouwantit

解决方案 22:

我使用pyenv来管理我的 python 版本。

pyenv install 3.7.3
pyenv local 3.7.3

检查你的 Python 版本:

$ python --version
Python 3.7.3

使用venv创建虚拟环境:

python -m venv .

然后激活虚拟环境:

source bin/activate

检查你的 Python 版本:

$ python --version
Python 3.7.3

您可能需要删除以前的虚拟环境

rm -rf bin

解决方案 23:

在 Linux Ubuntu 21.04(当前为 Python 3.9.5)上,我需要获取 Python 3.7.8 的虚拟环境。完整操作步骤:

找到你想要的 Python 版本源,例如 3.7.8 在这里: https: //www.python.org/downloads/release/python-378/

下载 Gzip 源码

解压后tar zxvf Python-3.7.8.tgz(如果与 3.7.8 不同,请根据需要修改您的版本号)

使用以下命令将解压后的文件夹复制到 /usr/bin:sudo cp -r Python-3.7.8 /usr/bin

cd /usr/bin/Python-3.7.8/

如果您想要查看目前拥有的内容,请检查内容: ls

sudo time ./configure
sudo time make
time sudo make install
time make clean

检查你的python是如何设置和报告的:

which python
python --version

应该都与你的主要安装相关(对我来说是 Python 3.9.5)

要检查您的新安装:

which python 3.7
python3.7 --version

应该都与你的 3.7.8 安装有关

如果您想运行它来检查,请执行以下操作:

python3.7
exit()

安装 venv:

sudo apt install venv

要创建 venv(可能在您的 repo 中,如果是这样,请将 .venv 添加到 .gitignore):

python3.7 -m venv .venv

要激活你的 venv:

source .venv/bin/activate

检查你的版本:

python --version

解决方案 24:

假设我想使用 python 3.8 并且我正在使用 MacOS。

brew install python@3.8

然后,

python3.8 -m venv venv

解决方案 25:

在 Linux 的 Windows 子系统中:

  1. 为python3创建环境:

virtualenv --python=/usr/bin/python3 env
  1. 激活它:

source env/bin/activate

解决方案 26:

2020 年底:

使用 virtualenv 最无缝的体验(附加好处:可以使用任何可能的 python 版本)是使用 pyenv 及其(捆绑的)pyenv-virtualenv 插件(参见https://realpython.com/intro-to-pyenv/#virtual-environments-and-pyenv

用法:pyenv virtualenv <python_version> <environment_name>

安装:

  • 首先检查您是否满足所有先决条件(取决于您的操作系统):https ://github.com/pyenv/pyenv/wiki/Common-build-problems#prerequisites

  • curl https://pyenv.run | bash

  • exec $SHELL

参见https://github.com/pyenv/pyenv-installer

virtualenv话虽如此,如今使用(和)的最佳替代方案pip是Poetry(以及pyenv上面指出的,以处理不同的 Python 版本)。

另一个选择是Pipenv,因为它直接由 PyPA(背后的组织pip和 PyPI)支持,并且已于 5 月底重新开始发布(在此之前自 2018 年底以来没有发布过...)

解决方案 27:

这适用于我在 Windows 10 中的使用,其中我使用的是 Python 3.7,并且想要降级为 Python 3.6.6 中的项目:

我使用“venv”创建了一个名为“venv”的新环境,我从https://www.python.org/downloads/windows/下载;安装“下载 Windows x86-64 可执行安装程序-”;然后我在我想要创建环境的目录中使用了以下命令行

>C:Users...PythonPython36python.exe -m venv venv

最后,我使用命令行激活了环境:

>venvScriptsactivate.bat

并通过调用以下命令检查 Python 版本:

>python --version
Python 3.6.6

解决方案 28:

这个问题的答案不应该那么复杂......

TL,DR:

在你的系统上安装你喜欢的多个 Python 版本并使用:

/c/path/to/any/version/of/python -m venv my_venv

=============================================

我使用 venv 安装虚拟环境

python -m venv <where/to/and/name_of_venv>

如果你尝试,which python当你说“python”时,你会看到你指的是哪个python。例如,对我来说它是:

which python

结果:/c/Program Files/Python36/python

所以,现在您有答案了!您可以在系统上安装任何版本的 Python,并同时拥有多个版本。例如,我在这个目录中安装了 Python3.7:“C:\Program Files\Python37”。因此,现在我不再使用“python”,而是通过以下方式指定哪个 Python /c/Program Files/Python37/python

 /c/Program Files/Python37/python -m venv my_venv

(不要忘记去掉路径中的空格)

就是这样!

解决方案 29:

是的,上述答案是正确的,并且在基于 Unix 的系统(如LinuxMAC OS X)上运行良好。

我尝试使用以下命令为Python2Python3创建虚拟环境。

这里我分别使用venv2venv3作为Python2Python3的名称。

Python2 »

MacBook-Pro-2:~ admin$ virtualenv venv2 --python=`which python2`
Running virtualenv with interpreter /usr/local/bin/python2
New python executable in /Users/admin/venv2/bin/python
Installing setuptools, pip, wheel...done.
MacBook-Pro-2:~ admin$ 
MacBook-Pro-2:~ admin$ ls venv2/bin/
activate        easy_install        pip2.7          python2.7
activate.csh        easy_install-2.7    python          wheel
activate.fish       pip         python-config
activate_this.py    pip2            python2
MacBook-Pro-2:~ admin$ 

Python3 »

MacBook-Pro-2:~ admin$ virtualenv venv3 --python=`which python3`
Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/Library/Frameworks/Python.framework/Versions/3.6'
New python executable in /Users/admin/venv3/bin/python3
Also creating executable in /Users/admin/venv3/bin/python
Installing setuptools, pip, wheel...done.
MacBook-Pro-2:~ admin$ 
MacBook-Pro-2:~ admin$ ls venv3/bin/
activate        easy_install        pip3.6          python3.6
activate.csh        easy_install-3.6    python          wheel
activate.fish       pip         python-config
activate_this.py    pip3            python3
MacBook-Pro-2:~ admin$ 

检查 Python 安装位置

MacBook-Pro-2:~ admin$ which python2
/usr/local/bin/python2
MacBook-Pro-2:~ admin$ 
MacBook-Pro-2:~ admin$ which python3
/usr/local/bin/python3
MacBook-Pro-2:~ admin$ 

解决方案 30:

我使用 Windows,所以我应该.exe在 pthon 路径上使用

virtualenv -p=C:Python27python2.exe <envname>
相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   681  
  在项目管理领域,集成产品开发(IPD)流程以其高效、协同的特点,被众多企业视为提升产品竞争力的关键。IPD流程强调跨部门、跨职能的紧密合作,以确保产品从概念到市场各个环节的无缝衔接。然而,实现这一目标并非易事,它需要企业深刻理解并掌握IPD流程中的跨部门协作艺术。本文将深入探讨IPD流程中跨部门协作的三个关键点,旨在为...
IPD项目管理咨询   9  
  掌握IPD流程图:提升团队协作的关键路径在当今快速变化的商业环境中,团队协作的效率与效果直接关系到项目的成功与否。集成产品开发(Integrated Product Development,简称IPD)作为一种先进的研发管理理念,通过跨部门、跨领域的协同工作,能够显著提升产品开发的速度与质量。而IPD流程图,则是这一理...
IPD流程阶段   9  
  IPD流程概述:理解其核心价值与实施背景集成产品开发(Integrated Product Development,简称IPD)是一种先进的产品开发管理理念,它强调跨部门协作、市场导向和快速响应变化的能力。IPD流程不仅关注产品本身的技术创新,更注重将市场、研发、生产、销售等各个环节紧密集成,以实现产品从概念到市场的高...
华为IPD是什么   7  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程以其跨部门协作、高效决策和快速响应市场变化的特点,被众多企业视为提升竞争力的关键。然而,实践IPD流程并非易事,项目管理中的种种错误往往阻碍了其效果的充分发挥。本文旨在深入探讨如何在实施IPD流程时避免这些常见错误,...
IPD框架   7  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用