再次更新。
下面的方法可能在较新版本的virtualenv中不起作用。在你尝试对旧的virtualenv进行修改之前,你应该把依赖关系保存在一个需求文件中(
pip freeze > requirements.txt
),并在其他地方做一个备份。如果出了什么问题,你仍然可以创建一个新的virtualenv并在其中安装旧的依赖项(
pip install -r requirements.txt
)。
已更新。
在我最初回答的5个月后,我改变了答案。下面的方法更加方便和稳健。
Side effect:
它还修复了当你将 Python 升级到 v2.7.8 之后在虚拟环境中进行
Symbol not found: _SSLv2_method
的异常。
Notice:
Currently,
this is for Python 2.7.x only
.
如果你在OS X上使用Homebrew Python,首先
deactivate
所有virtualenv,然后升级Python。
brew update && brew upgrade python
运行以下命令(<EXISTING_ENV_PATH>
是你的虚拟环境的路径)。
cd <EXISTING_ENV_PATH>
rm .Python
rm bin/pip{,2,2.7}
rm bin/python{,2,2.7}
rm -r include/python2.7
rm lib/python2.7/*
rm -r lib/python2.7/distutils
rm lib/python2.7/site-packages/easy_install.*
rm -r lib/python2.7/site-packages/pip
rm -r lib/python2.7/site-packages/pip-*.dist-info
rm -r lib/python2.7/site-packages/setuptools
rm -r lib/python2.7/site-packages/setuptools-*.dist-info
最后,重新创建你的虚拟环境。
virtualenv <EXISTING_ENV_PATH>
通过这样做,旧的Python核心文件和标准库(加上setuptools
和pip
)被删除,而在site-packages
中安装的自定义库被保留下来并工作,只要它们是纯Python。二进制库可能需要也可能不需要重新安装以正常工作。
这对我来说在5个安装了Django的虚拟环境中都是有效的。
BTW,如果./manage.py compilemessages
之后不工作了,可以试试这个。
brew install gettext && brew link gettext --force