Cập nhật lại:
Phương pháp sau có thể không hoạt động trong các phiên bản mới hơn của virtualenv. Trước khi bạn cố gắng thực hiện sửa đổi cho virtualenv cũ, bạn nên lưu các phụ thuộc trong tệp yêu cầu (pip freeze > requirements.txt
) và tạo bản sao lưu của nó ở một nơi khác. Nếu bất cứ điều gì sai, bạn vẫn có thể tạo một virtualenv mới và cài đặt các phụ thuộc cũ trong nó (pip install -r requirements.txt
).
Cập nhật: Tôi đã thay đổi câu trả lời 5 tháng sau khi tôi trả lời ban đầu. Phương pháp sau đây thuận tiện và mạnh mẽ hơn.
Tác dụng phụ: nó cũng sửa lỗiSymbol not found: _SSLv2_method
ngoại lệ khi bạn thực hiệnimport ssl
trong môi trường ảo sau khi nâng cấp Python lên v2.7.8.
Thông báo: Hiện nay, đây là chỉ Python 2.7.x .
Nếu bạn đang sử dụng Homebrew Python trên OS X, trước deactivate
hết hãy sử dụng virtualenv, sau đó nâng cấp Python:
brew update && brew upgrade python
Chạy các lệnh sau ( <EXISTING_ENV_PATH>
là đường dẫn của môi trường ảo của bạn):
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
Cuối cùng, tạo lại môi trường ảo của bạn:
virtualenv <EXISTING_ENV_PATH>
Bằng cách làm như vậy, các tệp lõi Python cũ và các thư viện chuẩn (cộng setuptools
và pip
) sẽ bị xóa, trong khi các thư viện tùy chỉnh được cài đặt site-packages
được bảo tồn và hoạt động, ngay khi chúng ở trong Python thuần túy. Thư viện nhị phân có thể hoặc không cần phải được cài đặt lại để hoạt động đúng.
Điều này làm việc cho tôi trên 5 môi trường ảo với Django được cài đặt.
BTW, nếu ./manage.py compilemessages
không hoạt động sau đó, hãy thử điều này:
brew install gettext && brew link gettext --force