使用不同的Python版本与虚拟环境

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

1507689 次浏览

注:对于python3.3+,请参阅下面的Aelfinn回答


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

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

在Windows下,这对我来说是有效的:

virtualenv --python=c:\Python25\python.exe envname

没有python.exe我得到了WindowsError: [Error 5] Access is denied我已经安装了Python2.7.1和虚拟环境1.6.1,我想要Python 2.5.2。

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

mkdir ~/srcwget http://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgztar -zxvf Python-2.7.9.tgzcd Python-2.7.9mkdir ~/.localpython./configure --prefix=$HOME/.localpythonmakemake install

虚拟环境

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

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

假设您目前在您的虚拟环境中安装了python 2.7。但要使用python3.2,您必须更新它:

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

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

$ source activate name_of_your_virtualenv

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

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/piplrwxrwxr-x  1 root  admin  65 Apr 10  2015 /usr/local/bin/pip ->../../../Library/Frameworks/Python.framework/Versions/2.7/bin/pip

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

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

$ virtualenv -p python3.2 my_envRunning virtualenv with interpreter /usr/local/bin/python3.2New python executable in my_env/bin/pythonInstalling 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)我安装的各种蟒蛇都有python2.7python3.2这样的名字,我可以使用这些名字而不是完整的路径。

========VIRTUAL EN V WRAPPER=========

1)我在让虚拟包装器工作时遇到了一些问题。这是我最终放入~/.bash_profile的内容:

export WORKON_HOME=$HOME/.virtualenvsexport 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-pythonexport VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python2.7#source /usr/local/bin/virtualenvwrapper.shsource /Library/Frameworks/Python.framework/Versions/2.7/bin/virtualenvwrapper.sh

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

$ mkvirtualenv -p /usr/local/bin/python3.2 my_envRunning virtualenv with interpreter /usr/local/bin/python3New python executable in my_env/bin/pythonInstalling setuptools, pip...done.Usage: source deactivate
removes the 'bin' directory of the environment activated with 'sourceactivate' from PATH.

与虚拟环境不同,虚拟环境包装器将在$WORKON_HOME环境变量指定的位置创建环境。

在mac上,我使用pyenv和虚拟机包装器。我必须创建一个新的虚拟机。你需要自制,如果你在mac上,我假设你已经安装了,但只是为了好玩:

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

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

我也冻结了我的需求,所以我可以简单地重新安装在新的虚拟环境中:

pip install -r requirements.txt

您可以使用所需的python版本调用virtualenv。例如:

python3 -m virtualenv venv

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

c:\Python34\Scripts\virtualenv.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 darwinType "help", "copyright", "credits" or "license" for more information.>>>

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

这招对我管用

sudo apt-get install python3-minimal
virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3

-p方法效果很好,但你必须记住每次都使用它。如果你的目标是通常切换到较新版本的Python,那是一种痛苦,也可能导致错误。

您的另一个选择是设置一个与-p做同样的事情的环境变量。通过您的~/.bashrc文件或您为登录会话管理环境变量的任何地方设置它:

export VIRTUALENV_PYTHON=/path/to/desired/version

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

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

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

或者使用虚拟包装器时:

mkvirtualenv -p $(which python2) <env_name>

从Python 3开始,留档建议使用以下方法创建虚拟环境:

python3 -m venv "my_env_name"

请注意,venv不允许使用其他版本的Python创建虚拟环境。为此,请安装并使用#1包。


过时的信息

#0脚本可用于创建虚拟环境:

pyvenv "/path/to/new/virtual/environment"

自Python 3.6以来已弃用。

有一个更简单的方法,

virtualenv venv --python=python2.7

感谢评论,这仅适用于在系统级别安装python2.7的情况(例如 /usr/bin/python2.7)。

否则,如果你使用的是自制的,你可以使用路径给你想要的。

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

您可以使用以下命令找到Python安装的路径

which python

这也适用于python 3。

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

最终浓缩为:

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

在linux的windows子系统中:

  1. 为python3创建环境:

    virtualenv --python=/usr/bin/python3 env
  2. Activate it:

    source env/bin/activate

,上述答案是正确的,并且在Linuxmac osx等基于Unix的系统上运行良好。

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

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

python2"

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

python3"

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

检查Python安装位置

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

在windows上:

py -3.4x32 -m venv venv34

py -2.6.2 -m venv venv26

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

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

 $ python3 -m pip install virtualenv$ python3 -m virtualenv --python=python2 vp27$ source vp27/bin/activate(vp27)$ python --versionPython 2.7.14
virtualenv -p python3 myenv

链接到创建虚拟环境

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

virtualenv -p python2 myenv(对于python2)

virtualenv -p python3 myenv(对于python3)

对于2019年的Debian(debian 9)系统,我发现了一个简单的解决方案,可以从虚拟环境中解决问题。

假设虚拟环境是通过以下方式创建的:

python3.7 -m venv myenv

但是只有python2python2.7的版本,你需要python3.7的最新功能。

然后,只需运行命令:

(myvenv) $ python3.7 -m venv --upgrade /home/username/path/to/myvenv/

将添加python3.7包,如果它们已经在您的系统上可用。

这是一个bug。只是升级你的pip应该是修复。

pip install --upgrade virtualenv

它在安装python 2的windows上为我工作:

  1. 步骤1:安装python 3版本。
  2. 第2步:创建一个env文件夹虚拟环境。
  3. 第3步:c:\Python37\python-m venvc:\path\to\env.

这就是我在现有的python 2安装上创建Python 3虚拟环境的方式。

是的,您只需要安装其他版本的python,并在命令中定义其他版本python的位置,例如:

Virtualenv /home/payroll/Documents/env-p /usr/bin/python3

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

pyenv install 3.7.3pyenv local 3.7.3

检查您的python版本:

$ python --versionPython 3.7.3

使用venv创建虚拟环境:

python -m venv .

然后激活虚拟环境:

source bin/activate

检查您的python版本:

$ python --versionPython 3.7.3

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

rm -rf bin

以下是如何在Visual Studio Code文件夹中创建虚拟环境的分步操作:我使用Powershell(管理员模式):
1.我创建了一个VSCode文件夹-“D:\Code_Python_VE”,我想在其中创建虚拟环境。
2.接下来,我键入命令-"Pip3安装虚拟环境"。(D:\Code_Python_VE>Pip3安装虚拟环境)3. D:\Code_Python_VE>python3-m venvproject_env
4. D:\Code_Python_VE>project_env\脚本\activate.bat
5. D:\Code_Python_VE>ls-这将列出一个新的目录“project_env”。
6. D:\Code_Python_VE>代码。这将启动Visual Studio Code。确保命令是(code.)。
7.创建包含以下内容的launch.jason:

{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"type": "python","request": "launch","name": "Python: Current File (Integrated Terminal 1)","program": "${file}"},{"name": "Python: Current File (Integrated Terminal 2)","type": "python","request": "launch","program": "${file}","console": "integratedTerminal"}]}

(请搜索如何进入调试窗口并在VS Code中添加新配置)。

  1. 在Visual Studio代码中按F1,命令托盘将打开-选择Python解释器并选择虚拟环境project_env。
  2. 添加test.py文件与一个语句打印(“Hello World”)。
  3. 运行此程序。
  4. 在Visual Studio代码终端-
    project_envd:\Code_Python_VE>python-m pip install
    希望对你有帮助

UBUNTU 19.04/Global Python 3.7。

这对我来说很有效,使用推荐的venv为python 3开发启用了Python 3.8环境。

安装3.8和3.8 venv模块:$ sudo apt install python3.8 python3.8-venv
还有你需要的其他模块

使用该环境中所需的python版本创建您的虚拟环境

$ /usr/bin/python3.8 -m venv python38-env

切换到您的虚拟环境

$ source python38-env/bin/activate
python -V = python 3.8

[2019年11月]我需要在基于Python 3.8的ArchLinux系统上安装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/


安装:

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

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

检查已安装的Python版本:

$ which python/usr/bin/python
$ python --versionPython 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 linuxType "help", "copyright", "credits" or "license" for more information.>>>
$ python3.7    ## newly-installed Python 3.7 packagePython 3.7.4 (default, Nov 20 2019, 11:36:53)[GCC 9.2.0] on linuxType "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 --versionPython 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 venvsource ~/venv/py3.7/bin/activate    ## activate that venvdeactivate                          ## 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 --versionPython 3.7.4
(py3.7)$ pythonPython 3.7.4 (default, Nov 20 2019, 11:36:53)[GCC 9.2.0] on linuxType "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]>>>

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

py -[my version] -m venv env

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

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

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

正如在多个答案中已经提到的那样,使用虚拟环境是一个干净的解决方案。然而,每个人都应该意识到的一个小陷阱是,如果python的别名设置在bash_aliases中,例如:

python=python3.6

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

virtualenv venv --python=pythonX.X

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

virtualenv -p=C:\Python27\python2.exe <envname>

很惊讶到目前为止还没有人提到conda。我发现这比这里提到的其他方法要简单得多。假设我有python 3.9和python 2.7,我正在做的项目是python 3.5.4,我可以简单地使用conda命令为3.5.4创建隔离的虚拟环境,而无需下载任何其他东西。

要首先查看可用python版本的列表,请使用命令

conda search "^python$"

要为python版本x. y. z创建虚拟环境,请使用以下命令

conda create -n yourenvname python=x.y.z

激活venv

conda activate yourenvname

停用

conda deactivate

要在完成后删除虚拟环境,请使用命令

conda remove -n yourenvname --all

2020年底:

使用虚拟环境的最无缝体验(额外的好处:使用任何可能的python版本)将是使用pyenv及其(捆绑的)pyenv-虚拟环境插件(cfhttps://realpython.com/intro-to-pyenv/#virtual-environments-and-pyenv

用法:pyenv virtualenv <python_version> <environment_name>

安装:

cfhttps://github.com/pyenv/pyenv-installer

话虽如此,现在最好的替代方法是诗歌(与上面提到的pyenv一起处理不同的python版本),而不是使用virtualenv(和pip)。

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

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

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

>C:\Users\...\Python\Python36\python.exe -m venv venv

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

>venv\Scripts\activate.bat

并通过调用检查python版本:

>python --versionPython 3.6.6

你应该安装那个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,您可以将其更改为具有不同版本的虚拟环境,因为它们安装在您的计算机中。

我在Windows上使用了这个答案

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

py -3.4 -m venv c:\path\to\wherever\you\want\it

在LinuxUbuntu 21.04(当前为Python 3.9.5)上,我需要获得Python 3.7.8的虚拟环境。开始工作的完整步骤:

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

下载Gzip源代码tarball

使用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 ./configuresudo time maketime sudo make installtime make clean

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

which pythonpython --version

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

检查您的新安装:

which python 3.7python3.7 --version

应该与您的3.7.8安装有关

如果您想运行它来检查,请执行:

python3.7exit()

安装venv:

sudo apt install venv

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

python3.7 -m venv .venv

激活你的venv:

source .venv/bin/activate

检查您的版本:

python --version

sudo add-apt-repostory ppa:死蛇/ppa

sudo apt更新

sudo apt installpython_version(例如:sudo apt install python3.8)

python_version-m venv env(例如:python3.8-m venv env)

. env/bin/激活

上述步骤将解决您的python版本的env问题。

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

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文件/Python36/python

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

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

(别忘了逃离路径中的空间)

就是它了!

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

brew install python@3.8

然后,

python3.8 -m venv venv

简单:

Linux

virtualenv venv --python=/usr/bin/python3.9

windows

virtualenv venv --python=C:\Users\username\AppData\Local\Programs\Python\Python\python.exe

只适用于窗户

  1. 在你的电脑上安装特定版本的 python
  2. 转到要创建虚拟环境的目录
  3. 在文件资源管理器的位置栏中键入 cmd
  4. 在 cmd 上输入-> pip install viralenv
  5. 然后在 cmd 中键入以下命令,使用 viralenv 库创建虚拟 env。 - > viralenv-p = “ C: location of python python.exe”< viralenv _ name >