Обновление снова:
следующий метод может не работать в более новых версиях virtualenv. Прежде чем пытаться внести изменения в старый virtualenv, вы должны сохранить зависимости в файле требований (pip freeze > requirements.txt
) и создать его резервную копию в другом месте. Если что-то пойдет не так, вы все равно можете создать новый virtualenv и установить в него старые зависимости (pip install -r requirements.txt
).
Обновлено: я изменил ответ через 5 месяцев после первоначального ответа. Следующий метод является более удобным и надежным.
Побочный эффект: он также исправляетSymbol not found: _SSLv2_method
исключение, когда вы делаете этоimport ssl
в виртуальной среде после обновления Python до v2.7.8.
Примечание: В настоящее время, это только 2.7.x Python .
Если вы используете Homebrew Python на OS X, сначала 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.
Кстати, если ./manage.py compilemessages
после этого не работает, попробуйте это:
brew install gettext && brew link gettext --force