与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.7或python3.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子系统中:
- 
为python3创build环境: virtualenv --python=/usr/bin/python3 env
- 
激活它: source env/bin/activate