Use different Python version with virtualenv
我有一个Debian系统,当前运行的是python 2.5.4。我正确安装了virtualenv,一切正常。我是否可以将virtualenv与其他版本的python一起使用?
我编译了python 2.6.2并希望将其与一些virtualenv一起使用。是否足以覆盖二进制文件?还是我必须改变一些关于图书馆的事情?
创建virtualenv实例时,只需使用
1 | virtualenv --python=/usr/bin/python2.6 <path/to/new/virtualenv/> |
注意:对于python 3.3或更高版本,请参考下面的AELFINN答案。
更新:对于python3.6,不推荐使用下面的
1 | python3 -m venv <myenvname> |
对于python3(3.3+),请使用上述方法或脚本
1 | pyvenv /path/to/new/virtual/environment |
请注意,
当您在共享的托管环境中,需要从源代码安装&complie python,然后从您的python版本创建venv时,这些步骤就是。对于python 2.7.9,您可以按照以下几行操作:
1 2 3 4 5 6 7 8 | 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 |
虚拟环境
1 2 3 4 5 6 7 | 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 |
当然,这可以适用于您想要复制您工作和部署的确切环境的任何情况。
1 | virtualenv --python=/usr/bin/python2.6 <path/to/myvirtualenv> |
有一种更简单的方法,
1 | virtualenv venv --python=python2.7 |
感谢您的评论,只有在系统级安装了python2.7(例如/usr/bin/python2.7)时,这才有效。
否则,如果您使用的是自制,则可以使用路径来提供所需的内容。
1 | virtualenv venv --python=/usr/local/bin/python |
您可以使用
1 | which python |
这也适用于python 3。
1 2 3 | which python3 >> /usr/local/bin/python3 virtualenv venv --python=/usr/local/bin/python3 |
最终冷凝至:
1 2 | virtualenv venv -p `which python` virtualenv venv -p `which python3` |
在Windows for Me下,此功能工作:
1 | virtualenv --python=c:\Python25\python.exe envname |
没有
Mac OSX 10.6.8(雪豹):
1)当您执行
1 | $ which pip |
看看这是什么版本的python。如果你看到类似的东西:
1 2 | $ which pip /usr/local/bin/pip |
然后这样做:
1 2 3 | $ 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,以便在使用
1 2 3 4 | $ 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 will create a folder in the current directory which
will contain the Python executable files, and a copy of the pip
[command] which you can use to install other packages.
http://docs.python-guide.org/en/latest/dev/virtualenvs/
2)系统python在
1 | /usr/local/bin |
3)我安装的各种Python都有像
1)我在让virtualenvwrapper工作时遇到了一些问题。这就是我最后在
1 2 3 4 5 6 7 | 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)
1 2 3 4 5 6 7 8 | $ 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不同,virtualenwrapper将在$workon_home环境变量指定的位置创建环境。使您的所有环境保持在一个位置。
假设您的virtualenv中当前安装了python 2.7。但要使用
1 | $ virtualenv --python=/usr/bin/python3.2 name_of_your_virtualenv |
然后通过以下方式激活virtualenv:
1 | $ source activate name_of_your_virtualenv |
然后在shell中执行:
这两个命令对新手来说应该很有用
您可以使用所需的python版本调用
1 | python3 -m virtualenv venv |
或者直接指向virtualenv路径。例如,对于Windows:
1 | c:\Python34\Scripts\virtualenv.exe venv |
通过跑步:
1 2 3 4 5 6 | 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版本
您的另一个选项是设置一个与
1 | export VIRTUALENV_PYTHON=/path/to/desired/version |
那么,在命令行上不指定
对于Mac(High Sierra),在python3上安装virtualenv,并为python2创建virtualenv:
1 2 3 4 5 | $ python3 -m pip install virtualenv $ python3 -m virtualenv --python=python2 vp27 $ source vp27/bin/activate (vp27)$ python --version Python 2.7.14 |
在Mac上,我使用pyenv和virtualenvwrapper。我必须创建一个新的virtualenv。你需要自制啤酒,如果你在Mac电脑上,我假设你已经安装了它,但只是为了好玩:
1 2 3 4 5 6 7 8 | 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中重新安装:
1 | pip install -r requirements.txt |
更简单的方法是,使用命令替换为您查找python2:
或者在使用virtualenvwrapper时:
在Windows Linux子系统中:
为python3创建环境:
1 | virtualenv --python=/usr/bin/python3 env |
激活它:
1 | source env/bin/activate |
是的,上面的答案是正确的,并且在基于Unix的系统(如Linux&mac OS X)上运行良好。
我尝试使用以下命令为python2&python3创建virtualenv。
在这里,我分别使用venv2和venv3作为python2和python3的名称。
Python2 »
1 2 3 4 5 6 7 8 9 10 11 | 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 »
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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$ |
Checking Python installation locations
1 2 3 4 5 6 | 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$ |
它对我有用
1 2 3 | sudo apt-get install python3-minimal virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3 |
在Windows上:
1 | py -3.4x32 -m venv venv34 |
或
1 | py -2.6.2 -m venv venv26 |
这将使用
1 | virtualenv -p python3 myenv |
创建virtualenv的链接
这是virtualenv的一个bug。只要升级你的PIP就可以了。
对于2019年的Debian(Debian9)系统,我发现了一个简单的解决方案,可以从虚拟环境中解决这个问题。
假设虚拟环境是通过以下方式创建的:
1 | python3.7 -m venv myenv |
但是只有
然后,只需运行命令:
1 | (myvenv) $ python3.7 -m venv --upgrade /home/username/path/to/myvenv/ |
将添加python3.7包,如果它们在您的系统上已经可用。