是否可以正常升级现有的virtualenv?


93

我有一个为Python 2.5创建的virtualenv,想将其“升级”到Python 2.6。

这是最初设置的方式:

virtualenv --no-site-packages -p python2.5 myenv

我现在在同一目录中运行virtualenv进行升级:

virtualenv --no-site-packages -p python2.6 myenv
...
Not overwriting existing python script myenv/bin/python (you must use myenv/bin/python2.6)
...
Overwriting myenv/bin/activate with new content

即使我也可以指定2.6,默认的python仍然是2.5。有什么办法可以完全删除 2.5并将'bin / python'指向2.6吗?

Answers:


62

您可以使用Python 2.6 virtualenv来“虚拟”现有目录。但是,您将必须重新安装所有已安装的模块。我经常有一个用于开发模块的虚拟目录,并将virtualenv与许多版本的Python放在同一目录中,并且工作正常。:)


1
谢谢!我尝试了您的方法,并看到“激活”脚本已更新,但是旧版本仍然存在(请参阅修订后的问题)。您能提供一个例子吗?
Matt Norris 2010年

13
您只需要在virtualenv中删除bin / python可执行文件,然后再使用python 2.6重新运行virtualenv。
卡尔·迈耶

9
好吧,您可以使其正常工作-但是为什么呢?其最大的吸引力virtualenv在于,它可以轻松,廉价地创建可重现的python环境。为什么要弄一个脏东西,而又不能确定已经修复了所有东西,或者可以重新制作它,又或者只是重新制作一个干净的东西,而又不确定正在干扰生产环境呢?
内德·迪利

9
@Ned:Virtualenv不能创建可复制的环境,而是创建隔离的环境。要复制它们,您还需要以相同的方式安装所有内容,virtualenv不足以做到这一点。zc.buildout更好。
伦纳特Regebro

1
@Ned:点了;这是我正在使用的开发环境。除非绝对需要2.6,否则我希望将其保持在2.5。这就产生了需求,所以我很好奇您是否可以升级隔离的环境以查看对代码的影响,而不必重建目录并将其复制/粘贴到新的环境中。
马特·诺里斯

19

在Python 3.3+中,venv支持--upgrade标志

  --upgrade             Upgrade the environment directory to use this version
                        of Python, assuming Python has been upgraded in-place.

用法:

python -m venv --upgrade YOUR_VENV_DIRECTORY

我刚刚在几个项目上将我的venv从Python 3.7.x升级到3.8,没有任何问题。


1
“假设Python已就地升级”……不幸的是,这似乎意味着如果我的系统python3指向3.6,我将无法python3在venv中指向3.7
joel

4

您应该创建一个新的 virtualenv使用来python2.6,然后在激活新的环境后,使用它python2.6和它easy_install来安装所需的任何站点包的新版本。请注意,路径的名称virtualenv已硬连接到环境中的各种文件中,因此,当您准备切换到该virualenv路径时,请更改启动脚本等以引用新路径,或者非常小心地将其复制到旧目录并修改其中的路径名。


3

在CentOS上安装第二个Python

  1. 下载python
  2. 安装到差异本地

    configure --prefix=/opt/virtualenv/python 
    make && make install
  3. 使用新的python创建虚拟环境

    virtualenv /opt/virtualenv --python=/opt/python276/bin/python

    注意:如果需要,可以由其他用户完成

    chown pyuser -R /opt/virtualenv
    su - pyuser
    source /opt/virtualenv/bin/activate
    python -v
  4. 创建虚拟环境:

    virtualenv /opt/virtualenv
    su - infograficos
    source bin/activate
  5. 使用python 2.7安装pip(在virtualenv内部)

    easy_install pip 

0

如果您使用的是OS X,如果要将Python升级到次要版本(例如,从2.7.6到2.7.8),同时保持第三方库正常运行,请尝试此操作

它在安装了Django的5个不同虚拟环境中为我工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.