与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