使用与virtualenv不同的Python版本

时间:2009-10-07 21:11:22

标签: python virtualenv virtualenvwrapper

我目前使用python 2.5.4运行Debian系统。我得到了virtualenv正确安装,一切正常。我是否有可能使用不同版本的Python的virtualenv?

我编译了Python 2.6.2并希望将它与一些virtualenv一起使用。是否足以覆盖二进制文件?或者我是否必须更改库中的某些内容?

37 个答案:

答案 0 :(得分:1348)

在创建virtualenv实例时,只需使用--python(或简短-p)选项来指定要使用的Python可执行文件,例如:

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

N.B。对于 Python 3.3 或更高版本,请参阅下面的Aelfinn answer

答案 1 :(得分:197)

更新:对于Python3.6,不推荐使用以下pyvenv脚本。代替,  the Python Docs suggest使用以下命令创建虚拟环境:

python3 -m venv <myenvname>

对于python3(3.3+),请使用上述方法或script pyvenv命令。

pyvenv /path/to/new/virtual/environment

请注意venv不允许使用其他版本的Python创建virtualenv。为此,请安装并使用virtualenv package

答案 2 :(得分:173)

当您使用共享托管环境并需要安装&amp;从源代码编译Python,然后从Python版本创建venv。对于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   

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

答案 3 :(得分:96)

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

答案 4 :(得分:79)

有一种更简单的方法,

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/python3
virtualenv venv --python=/usr/local/bin/python3

最终凝结为:

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

答案 5 :(得分:67)

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

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

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

答案 6 :(得分:29)

Mac OSX 10.6.8(Snow Leopard):

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的副本   [command],您可以使用它来安装其他软件包。

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,我可以使用这些名称而不是完整路径。

====== VIRTUALENVWRAPPER ======

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环境变量指定的位置创建环境。这可以将您的所有环境保存在一个地方。

答案 7 :(得分:20)

假设您目前在virtualenv中安装了python 2.7。但是想要使用python3.2,你必须用以下内容更新:

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

然后通过以下方式激活您的 virtualenv

$ source activate name_of_your_virtualenv

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

答案 8 :(得分:15)

这两个命令对于新手来说应该可以正常工作

virtualenv -p python2 myenv(对于python2)

virtualenv -p python3 myenv(对于python3)

答案 9 :(得分:10)

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

python3 -m virtualenv venv

或者直接指向你的virtualenv路径。例如对于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 darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

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

答案 10 :(得分:9)

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

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

export VIRTUALENV_PYTHON=/path/to/desired/version

然后virtualenv将在命令行上未指定-p的任何时候使用它。

答案 11 :(得分:8)

对于Mac(High Sierra),在python3上安装virtualenv并为python2创建virtualenv:

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

答案 12 :(得分:6)

通过使用命令替换为您找到python2更加容易:

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

或者在使用virtualenvwrapper时:

mkvirtualenv -p $(which python2) <env_name>

答案 13 :(得分:6)

在Mac上我使用pyenv和virtualenvwrapper。我不得不创造一个新的virtualenv。你需要自制软件,我假设你已经安装了,如果你在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}

我首先冻结了我的要求所以我可以简单地重新安装新的virtualenv:

pip install -r requirements.txt

答案 14 :(得分:4)

在windows子系统for linux中:

  1. 为python3创建环境:

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

    source env/bin/activate
    

答案 15 :(得分:4)

您应该安装了该 Python 版本。如果你有它,那么基本上,

使用 virtualenv,

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

答案 16 :(得分:3)

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

py -[my version] -m venv env

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

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

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

答案 17 :(得分:3)

,上述答案是正确的,适用于基于Unix的系统,如 Linux &amp; MAC OS X

我尝试为 Python2 &amp;创建 virtualenv Python3 ,包含以下命令。

我在这里使用了 venv2 &amp; venv3 作为 Python2 &amp;的名称 Python3

  

Python2»

Message::Message(char * ptr, size_t nBytes)
  : m_nBytes(nBytes), m_msg(nBytes?new char[nBytes]:nullptr)
{
  if(ptr)
  {
    assert(nBytes);
    memcpy(m_msg.get(), ptr, nBytes)
  }
}
Message::Message::Message(size_t nBytes)
  : Message(nullptr, m_nBytes)
{}
Message::Message(Message const & other)
  : Message(other.m_msg.get(), other.m_nBytes)
{}
  

Python3»

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$ 
  

检查Python安装位置

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$ 

答案 18 :(得分:3)

这适用于我在 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 --version Python 3.6.6

答案 19 :(得分:2)

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

python=python3.6

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

virtualenv venv --python=pythonX.X

答案 20 :(得分:2)

在Windows上:

py -3.4x32 -m venv venv34

py -2.6.2 -m venv venv26

这使用py launcher,它会为你找到合适的python可执行文件(假设你安装了它)。

答案 21 :(得分:2)

这对我有用

sudo apt-get install python3-minimal

virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3

答案 22 :(得分:1)

这是virtualenv的错误。 只需升级您的点子即可解决问题。

pip install --upgrade virtualenv

答案 23 :(得分:1)

对于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软件包(如果您的系统上已经可用)。

答案 24 :(得分:1)

virtualenv -p python3 myenv

Link to Creating virtualenv

答案 25 :(得分:1)

2020年底:

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

用法:pyenv virtualenv <python_version> <environment_name>

安装:

cf https://github.com/pyenv/pyenv-installer

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

另一种选择,因为它直接受到PyPA(pip和PyPI背后的组织)的支持,并且从5月底开始重新发布(自2018年底以来一直没有发布...)将是Pipenv

答案 26 :(得分:1)

[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/

https://www.tldp.org/HOWTO/html_single/Glibc-Install-HOWTO/

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

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


安装:

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

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

检查已安装的Python版本:

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版本创建venv:

  

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

     

12.2。创建虚拟环境

     

用于创建和管理虚拟环境的模块称为$ 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 venv通常会安装可用的最新版本的Python。如果您的系统上有多个Python版本,则可以通过运行python3或所需的任何版本来选择特定的Python版本。

     

要创建虚拟环境,请确定要放置虚拟目录的目录,并使用带有目录路径的脚本运行venv模块:

     
    

venv

  
     

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


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

tutorial-env

已添加到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

~/.bashrc

测试Python 3.7 venv:

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

答案 27 :(得分:0)

我在 Windows 上使用了这个答案

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

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

答案 28 :(得分:0)

令人惊讶的是,到目前为止没有人提到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

使用激活

conda activate yourenvname

停用

conda deactivate

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

conda remove -n yourenvname --all

答案 29 :(得分:0)

在 Linux Ubuntu 21.04(当前为 Python 3.9.5)上,我需要获得 Python 3.7.8 的 virtualenv。开始工作的完整步骤:

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

下载 Gzipped 源 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 ./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(可能在您的仓库中,如果是这样,请将 .venv 添加到 .gitignore):

python3.7 -m venv .venv

要激活您的 venv:

source .venv/bin/activate

检查您的版本:

python --version

答案 30 :(得分:0)

我使用Windows,因此我应该在pthon路径上使用.exe

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

答案 31 :(得分:0)

这是如何在Visual Studio Code文件夹中创建虚拟环境的分步指南: 我使用了Powershell(管理员模式):
 1.我创建一个VSCode文件夹-“ D:\ Code_Python_VE”,在其中创建虚拟环境。
 2.接下来,我键入命令-“ pip3 install virtualenv”。 (D:\ Code_Python_VE> pip3安装virtualenv)  3. D:\ Code_Python_VE> python3 -m venv project_env
 4. D:\ Code_Python_VE> project_env \ Scripts \ activate.bat
 5. D:\ Code_Python_VE> ls-这将列出一个新目录“ project_env”。
 6. D:\ Code_Python_VE>代码。这将启动Visual Studio代码。确保命令是(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 Interpreter”,然后选择虚拟环境project_env。
  2. 添加带有一条声明的test.py文件(“ Hello World”)。
  3. 运行该程序。
  4. 在Visual Studio代码终端中-
    (project_env)d:\ Code_Python_VE> python -m pip install --upgrade
    我希望这会有所帮助。

答案 32 :(得分:0)

您可以这样做:

virtualenv -p python3 .

答案 33 :(得分:0)

我使用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

答案 34 :(得分:0)

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

  
    
      

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

    
  

答案 35 :(得分:0)

它在安装了python 2的Windows上对我有用:

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

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

答案 36 :(得分:-1)

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