我有一个当前使用python 2.5.4运行的Debian系统.我得到了virtualenv正确安装,一切正常.我是否有可能使用不同版本的Python的virtualenv?
我编译了Python 2.6.2,并希望将它与一些virtualenv一起使用.是否足以覆盖二进制文件?或者我是否必须更改库中的某些内容?
只需在创建virtualenv实例时使用--python
(或短-p
)选项来指定要使用的Python可执行文件,例如:
virtualenv --python=/usr/bin/python2.6
注意对于Python 3.3或更高版本,请参阅下面的Aelfinn的答案.
更新: 对于Python3.6,pyvenv
不推荐使用以下脚本.相反,
Python Docs建议使用以下命令创建虚拟环境:
python3 -m venv
对于python3(3.3+),请使用上述方法或脚本 pyvenv
命令.
pyvenv /path/to/new/virtual/environment
请注意,venv
不允许使用其他版本的Python创建virtualenv.为此,请安装并使用该virtualenv
软件包.
这些是您在共享托管环境中的步骤,需要从源安装和编译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
当然,这适用于您希望复制您工作和部署的确切环境的任何情况.
virtualenv --python=/usr/bin/python2.6
有一种更简单的方法,
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`
在我的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.
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.7
或者python3.2
,我可以使用这些名称而不是完整的路径.
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环境变量指定的位置创建环境.这可以将您的所有环境保存在一个地方.
假设您目前在virtualenv中安装了python 2.7.但是想要使用python3.2
,你必须用以下内容更新:
$ virtualenv --python=/usr/bin/python3.2 name_of_your_virtualenv
然后通过以下方式激活你的virtualenv:
$ source activate name_of_your_virtualenv
然后执行:python --version
在shell中检查您的版本是否现在已更新.
对于新手来说,这两个命令应该可以正常工作
virtualenv -p python2 myenv
(对于python2)
virtualenv -p python3 myenv
(对于python3)
你可以调用virtualenv
你想要的python版本.例如:
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版本
该-p
方法效果很好,但您必须记住每次都使用它.如果您的目标是通常切换到较新版本的Python,那将是一种痛苦,也可能导致错误.
您的另一个选择是设置一个与之相同的环境变量-p
.通过您的~/.bashrc
文件或管理登录会话的环境变量的任何位置设置此项:
export VIRTUALENV_PYTHON=/path/to/desired/version
然后在virtualenv
您未-p
在命令行上指定的任何时候使用它.
对于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
通过使用命令替换为您找到python2更简单:
virtualenv -p $(which python2)
或者在使用virtualenvwrapper时:
mkvirtualenv -p $(which python2)
在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