与virtualenv使用不同的Python版本

我有一个目前与Python 2.5.4运行的Debian系统。 我已经安装了virtualenv,一切正常。 有没有可能使用不同版本的Python的virtualenv?

我编译Python 2.6.2,并希望与一些virtualenv使用它。 是否足以覆盖二进制文件? 还是我必须改变一些关于图书馆的东西?

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

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

NB对于Python 3.3或更高版本,请参阅下面的Aelfinn的答案 。 [编者注:我知道这通常应该是一个评论,而不是一个编辑,但一个新的评论将被隐藏,我只花了45分钟解开错误,因为这个重要的答案埋在三或四个鹦鹉的答案。 我只是想把所有的时间都留在这里。]

这些步骤是在共享主机环境中进行的,需要从源代码安装&编译Python,然后从Python版本创buildvenv。 对于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 

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

 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与virtualenv 1.6.1安装,我想python 2.5.2。

更新:对于Python3.6,下面的pyvenv脚本已被弃用。 相反,build议您使用以下命令创build虚拟环境:

 python3 -m venv <myenvname> 

对于python3(3.5.2),使用新的 pyvenv命令。

 pyvenv /path/to/new/virtual/environment 

有一个更简单的方法,

 virtualenv venv --python=python2.7 

感谢评论,这只有在系统级安装了python2.7(例如/usr/bin/python2.7)才有效。

否则,如果您正在使用自制软件,您可以使用该path给你想要的东西。

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

你可以find你的Python安装path

 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` 

Mac OSX 10.6.8(Snow Leopard):

1)当你做pip install virtualenv ,pip命令与你的一个python版本相关联,并且virtualenv被安装到那个版本的python中(你可以做

  $ which pip 

看看是什么版本的Python)。 默认情况下,这将是您创build的任何新环境所使用的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将在当前目录中创build一个文件夹,其中将包含Python可执行文件以及可用于安装其他软件包的pip [命令]副本。

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

virtualenv只是从您的计算机上的位置复制python到新创build的my_env / bin /目录。

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

  /usr/local/bin 

3)我安装的各种python3.2名称,如python2.7python3.2 ,我可以使用这些名称,而不是完整的path。

======== 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解释器的完整path(当我不想使用默认的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环境variables指定的位置创build环境。 这将您所有的环境保存在一个地方。

假设你现在已经在你的virtualenv中安装了Python 2.7。 但是要使用python3.2。 你将不得不更新这个:

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

然后激活你的virtualenv并在shell中inputpython --version来检查你的版本是否被更新。

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

 python3 -m virtualenv venv 

或者直接指向你的virtualenvpath。 例如对于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版本

在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 

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

你的另外一个select是设置一个和-p一样的环境variables。 通过你的~/.bashrc文件或者你为login会话pipe理环境variables的地方设置:

 export VIRTUALENV_PYTHON=/path/to/desired/version 

然后, virtualenv会在你没有在命令行中指定-p时候使用它。

更容易,通过使用命令replace为您findpython2:

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

或者在使用virtualenvwrapper时:

mkvirtualenv -p $(which python2) <env_name>

它为我工作

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

在Windows的Linux子系统中:

  1. 为python3创build环境:

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

     source env/bin/activate