使用与virtualenv不同的Python版本

问题描述 投票:928回答:22

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

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

python virtualenv virtualenvwrapper
22个回答
1376
投票

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

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

注:对于Python 3.3或更高版本,请参阅下面的Aelfinn的answer


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版本


9
投票

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

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

export VIRTUALENV_PYTHON=/path/to/desired/version

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


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

7
投票

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

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

或者在使用virtualenvwrapper时:

mkvirtualenv -p $(which python2) <env_name>


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

4
投票

在windows子系统中用于linux:

  1. 为python3创建环境: virtualenv --python=/usr/bin/python3 env
  2. 激活它: source env/bin/activate

3
投票

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

我尝试使用以下命令为Python2和Python3创建virtualenv。

在这里,我分别使用了venv2和venv3作为Python2和Python3的名称。

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$ 

2
投票

它对我有用

sudo apt-get install python3-minimal

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

2
投票

在Windows上:

py -3.4x32 -m venv venv34

要么

py -2.6.2 -m venv venv26

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


1
投票
virtualenv -p python3 myenv

Link to Creating virtualenv


210
投票

更新:对于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


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软件包,如果它们已在您的系统上可用。


1
投票

这是virtualenv的一个错误。只是升级你的点应该是修复。

pip install --upgrade virtualenv


0
投票

它在使用python 2安装的Windows上工作:

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

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


0
投票

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

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


174
投票

这些是您在共享托管环境中的步骤,需要从源安装和编译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   

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


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

82
投票

有一种更简单的方法,

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`

68
投票

在我的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。


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


21
投票

假设您目前在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以检查您的版本是否现在已更新。


15
投票

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

virtualenv -p python2 myenv(对于python2)

virtualenv -p python3 myenv(适用于python3)

© www.soinside.com 2019 - 2024. All rights reserved.