当前位置:  开发笔记 > 编程语言 > 正文

使用与virtualenv不同的Python版本

如何解决《使用与virtualenv不同的Python版本》经验,为你挑选了14个好方法。

我有一个当前使用python 2.5.4运行的Debian系统.我得到了virtualenv正确安装,一切正常.我是否有可能使用不同版本的Python的virtualenv?

我编译了Python 2.6.2,并希望将它与一些virtualenv一起使用.是否足以覆盖二进制文件?或者我是否必须更改库中的某些内容?



1> Daniel Rosem..:

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

virtualenv --python=/usr/bin/python2.6 

注意对于Python 3.3或更高版本,请参阅下面的Aelfinn的答案.


我想我会提到这也适用于virtualenvwrappers:mkvirtualenv -p python2.6 env
我在这里遗漏了一些东西 - 这不是要求已经在系统上安装了2.6吗?我认为virtualenv的*point*是我可以拥有除主要版本之外的python版本(在我的情况下,在CentOS上为2.4).我假设我可以安装virtualenv,*然后*在它下面安装Python 2.6 for env中的包使用?
如果你有点懒惰:`virtualenv -p \`哪个python2.6 \``
@John是的,你是.这不是virtualenv的重点:重点是为Python创建一个沙盒环境.您需要先安装该版本 - 您可以在本地为您的用户安装它.
@JohnC你可以使用pythonbrew来安装替代蟒蛇.
是否没有可以在python版本之间切换而无需创建新虚拟环境的解决方案?
`-p/--python`选项也适用于`virtualenvwrapper`函数,如`mkproject`.

2> The Aelfinn..:

更新: 对于Python3.6,pyvenv不推荐使用以下脚本.相反, Python Docs建议使用以下命令创建虚拟环境:

python3 -m venv 

对于python3(3.3+),请使用上述方法或脚本 pyvenv命令.

pyvenv /path/to/new/virtual/environment

请注意,venv不允许使用其他版本的Python创建virtualenv.为此,请安装并使用该virtualenv 软件包.


很高兴你指出,它需要更多的推广.一个小问题:他们现在主张将其作为`python3 -m venv `运行,以防止需要存根脚本.
实际上,Python 3.6+中的`pyvenv`脚本是[已弃用](https://docs.python.org/dev/whatsnew/3.6.html#deprecated-features),尽管底层的`venv`模块本身不是.所以使用`python 3 -m venv `正如@PaulEveritt所说.
请注意,`pyvenv`或`python3 -m venv ...`不要安装`python-config`脚本.这意味着即使在激活Python3环境之后,系统范围的`python-config`也会被调用,并带来令人困惑的后果.请参阅2011年的这个错误报告https://github.com/pypa/virtualenv/issues/169和我的问题/sf/ask/17360801/? RQ = 1
确认@Nick的观察有效:用特定的Python版本创建`venv`的方法是在设置该版本时使用该版本。例如:`python3.5 -m venv venv`

3> zzart..:

这些是您在共享托管环境中的步骤,需要从源安装和编译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   

当然,这适用于您希望复制您工作和部署的确切环境的任何情况.


当然.如果您在虚拟主机环境中并且服务器提供了您不满意的旧版python - 这就是我的情况.此外,如果您碰巧在不同的服务器上开发项目,并且您希望在本地计算机上复制这些环境...... Virtualenv会创建到python库的硬链接.因此,您正在使用安装和创建Virtualenv的python版本非常重要.
或者,如果你像我一样,并且在没有sudo特权的情况下工作在锁定的机器上.库,SQL数据库,语言和编译器的本地副本很多!谢谢!
在virtualenv 1.9.1下,我不得不使用`〜/ .localpython/bin/virtualenv`代替`virtualenv`来完成设置而不会出错.另外,使用`source ve/bin/activate`而不是`source activate`.
这样做的另一个原因是在它们进入main之前试用beta版以确保你的项目及其依赖项仍然有效,而不会有破坏你的软件包管理的风险,并且在整个地方留下悬空文件.我喜欢这个答案.
你能详细说明为什么这样做:为什么在本地安装python?更重要的是**为什么要使用你要使用的python版本安装virtualenv**?

4> iElectric..:
virtualenv --python=/usr/bin/python2.6 


是否没有可以在python版本之间切换而无需创建新虚拟环境的解决方案?
请参阅下面的答案,了解使用环境变量的等效解决方案 这种方法意味着您不必记住使用`-p`.
如果您要安装系统上未安装的python版本,此方法行得通吗?假设您要测试“ python3.6”,但不想触摸计算机上安装的“ python3.5”?

5> Daniel Lee..:

有一种更简单的方法,

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`



6> balazs..:

在我的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.



7> 7stud..:

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,我可以使用这些名称而不是完整的路径.

======== 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解释器的完整路径(当我不想使用默认的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环境变量指定的位置创建环境.这可以将您的所有环境保存在一个地方.



8> kmario23..:

假设您目前在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中检查您的版本是否现在已更新.



9> Sachin Kolig..:

对于新手来说,这两个命令应该可以正常工作

virtualenv -p python2 myenv (对于python2)

virtualenv -p python3 myenv (对于python3)



10> Nima Soroush..:

你可以调用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版本


@tanvi:你需要首先在你的python3中安装virtualenv.首先运行`pip3 install virtualenv`

11> Chris Johnso..:

-p方法效果很好,但您必须记住每次都使用它.如果您的目标是通常切换到较新版本的Python,那将是一种痛苦,也可能导致错误.

您的另一个选择是设置一个与之相同的环境变量-p.通过您的~/.bashrc文件或管理登录会话的环境变量的任何位置设置此项:

export VIRTUALENV_PYTHON=/path/to/desired/version

然后在virtualenv您未-p在命令行上指定的任何时候使用它.



12> Zihao Zhao..:

对于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



13> Gerard..:

通过使用命令替换为您找到python2更简单:

virtualenv -p $(which python2)

或者在使用virtualenvwrapper时:

mkvirtualenv -p $(which python2)



14> silverdagger..:

在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

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有