现有的virtualenv可以平滑升级吗?

124 投票
6 回答
127641 浏览
提问于 2025-04-15 18:41

我有一个为Python 2.5创建的虚拟环境,现在想把它“升级”到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

但是默认的Python还是2.5,尽管我可以指定使用2.6。有没有办法完全删除 2.5,让'bin/python'指向2.6呢?

6 个回答

4

你应该使用 python2.6 创建一个新的 virtualenv(虚拟环境)。然后,在激活这个新环境后,使用它里面的 python2.6easy_install 来安装你需要的任何新版本的库。要注意的是,virtualenv 的路径是写死在环境中的一些文件里的,所以当你准备切换到这个新环境时,要么修改你的启动脚本等,让它们指向新的 virtualenv 路径,要么小心翼翼地把它复制到旧目录,并修改里面的路径名。

56

在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

我刚刚在几个项目中把我的虚拟环境从Python 3.7.x升级到了3.8,没遇到任何问题。

72

你可以使用Python 2.6的virtualenv工具来“重新虚拟化”一个已经存在的目录。不过,你需要重新安装你之前安装的所有模块。我经常会为开发一个模块创建一个虚拟目录,然后用virtualenv在同一个目录下使用多个版本的Python,这样也能正常工作。:)

撰写回答