Nguyên nhân của vấn đề thường là các tập lệnh lỗi thời trong thư mục con bin
(Linux) hoặc Scripts
(Windows). Tôi sẽ giải thích vấn đề này bằng cách sử dụng vấn đề mà tôi gặp phải là một ví dụ.
Tôi đã cài đặt virtualenv phiên bản 1.10 trong các gói trang web người dùng của tôi (thực tế là trong các gói trang web của người dùng không phải là gói trang web sytem không liên quan ở đây)
pdobrogost@host:~$ which virtualenv
/home/users/pdobrogost/.local/bin/virtualenv
pdobrogost@host:~$ virtualenv --version
1.10
Sau khi tôi nâng cấp lên phiên bản 1.11, tôi đã gặp lỗi sau:
pdobrogost@host:~$ virtualenv --version
Traceback (most recent call last):
File "/home/users/pdobrogost/.local/bin/virtualenv", line 5, in <module>
from pkg_resources import load_entry_point
File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 2701, in <module>
return self.__dep_map
File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 572, in resolve
if insert:
pkg_resources.DistributionNotFound: virtualenv==1.10
Tệp /home/users/pdobrogost/.local/bin/virtualenv
được đề cập trong thông báo lỗi trông như thế này:
#!/opt/python/2.7.5/bin/python2.7
# EASY-INSTALL-ENTRY-SCRIPT: 'virtualenv==1.10','console_scripts','virtualenv'
__requires__ = 'virtualenv==1.10'
import sys
from pkg_resources import load_entry_point
if __name__ == '__main__':
sys.exit(
load_entry_point('virtualenv==1.10', 'console_scripts', 'virtualenv')()
)
Ở đó, chúng tôi thấy rằng virtualenv
tập lệnh không được cập nhật và vẫn yêu cầu phiên bản 1.10 của virtualenv được cài đặt trước đó.
Bây giờ, cài đặt lại virtualenv như thế này
pdobrogost@host:~$ pip install --user --upgrade virtualenv
Downloading/unpacking virtualenv from https://pypi.python.org/packages/py27/v/virtualenv/virtualenv-1.11.1-py27-none-any.whl#md5=265770b61de41d34d2e9fdfddcdf034c
Using download cache from /home/users/pdobrogost/.pip_download_cache/https%3A%2F%2Fpypi.python.org%2Fpackages%2Fpy27%2Fv%2Fvirtualenv%2Fvirtualenv-1.11.1-py27-none-any.whl
Installing collected packages: virtualenv
Successfully installed virtualenv
Cleaning up...
không giúp (không pip install --user --upgrade --force-reinstall virtualenv
) vì tập lệnh /home/users/pdobrogost/.local/bin/virtualenv
không thay đổi.
Cách duy nhất tôi có thể khắc phục điều này là bằng cách xóa thủ công các tập lệnh virtualenv * khỏi /home/users/pdobrogost/.local/bin/
thư mục và cài đặt lại virtualenv. Sau này, các tập lệnh mới được tạo tham chiếu đến phiên bản phù hợp của gói:
pdobrogost@host:~$ virtualenv --version
1.11