现有的virtualenv可以平滑升级吗?
我有一个为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.6
和 easy_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,这样也能正常工作。:)