再次更新:
以下方法可能不适用于较新版本的 virtualenv。在尝试修改旧的 virtualenv 之前,您应该将依赖项保存在需求文件 (pip freeze > requirements.txt) 中并在其他地方进行备份。如果出现任何问题,您仍然可以创建一个新的 virtualenv 并在其中安装旧的依赖项 (pip install -r requirements.txt)。
更新:我在最初回答 5 个月后更改了答案。下面的方法更方便、更健壮。
副作用:它还修复了在将 Python 升级到 v2.7.8 后在虚拟环境中执行 import ssl 时出现的 Symbol not found: _SSLv2_method 异常。
注意:目前,这仅适用于 Python 2.7.x。
如果你在 OS X 上使用 Homebrew Python,首先deactivate all 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 的虚拟环境中对我有用。
顺便说一句,如果 ./manage.py compilemessages 之后不起作用,试试这个:
brew install gettext && brew link gettext --force