[英]python pip error pkg_resources.DistributionNotFound
我正在嘗試安裝一個新模塊,但我發現pip
不起作用 - 它顯示
pkg_resources.DistributionNotFound: The 'pip==1.5.6' distribution was not found and is required by the application
對於我執行的每個電話。 另外,對於pip --help
。 我發現了一些使用pip
或easy_install
重新安裝pip
建議,但easy_install
也不起作用:
pkg_resources.DistributionNotFound: The 'setuptools==5.7' distribution was not found and is required by the application
有沒有辦法在不重新安裝python
及其所有模塊的情況下解決這個問題?
我有 Linux Ubuntu 14.04。
apt-get install python-pip
建議安裝pip
(以及一堆其他以下軟件),就像我的系統中沒有它一樣。 我不敢這樣做,這里會發生沖突嗎?
更新。
apt-get
說它要安裝以下內容: build-essential dpkg-dev fakeroot g++ g++-4.8 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libfakeroot libstdc++-4.8-dev python-chardet-whl python-colorama python-colorama-whl python-distlib python-distlib-whl python-html5lib python-html5lib-whl python-pip python-pip-whl python-requests-whl python-setuptools python-setuptools-whl python-six-whl python-urllib3-whl python-wheel
。 但據我所知,沒有這些包,pip 對我有用。
我也表演了
which -a python
: /usr/bin/python
which -a pip
: /usr/local/bin/pip
python --version
: Python 2.7.6
擁有錯誤的完整回溯會很有用。 可能導致此問題的一種情況是安裝了多個版本的 Python。
例如,在我的 Ubuntu 20.04.1 LTS 上,除了隨 Ubuntu 20 一起分發的 Python 3.8 之外,我還從源代碼安裝了 Python 3.6。這是我在安裝 Python 3.6 后使用pip3 --version
得到的pip3 --version
:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 581, in _build_master
ws.require(__requires__)
File "/usr/local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 898, in require
needed = self.resolve(parse_requirements(requirements))
File "/usr/local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 789, in resolve
raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.VersionConflict: (pip 20.2.3 (/usr/local/lib/python3.6/site-packages), Requirement.parse('pip==20.0.2'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/bin/pip3", line 6, in <module>
from pkg_resources import load_entry_point
File "/usr/local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3126, in <module>
@_call_aside
File "/usr/local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3110, in _call_aside
f(*args, **kwargs)
File "/usr/local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3139, in _initialize_master_working_set
working_set = WorkingSet._build_master()
File "/usr/local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 583, in _build_master
return cls._build_from_requirements(__requires__)
File "/usr/local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 596, in _build_from_requirements
dists = ws.resolve(reqs, Environment())
File "/usr/local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 784, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'pip==20.0.2' distribution was not found and is required by the application
最后一行是有問題的錯誤,但請注意回溯中的一個重要細節: raise VersionConflict
。
這可以通過顯式使用所需版本的pip
來解決:
$ python3.6 -m pip --version
pip 20.2.3 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)
或者干脆:
$ pip3.6 --version
pip 20.2.3 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)
另一個可能會遇到的問題是在執行pip3.6 install
時缺少 lsb_release問題:
File "/usr/local/lib/python3.6/subprocess.py", line 438, in run
output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '('lsb_release', '-a')' returned non-zero exit status 1.
這可以通過定位lsb_release.py
並創建符號鏈接來解決,例如:
sudo ln -s /usr/lib/python3/dist-packages/lsb_release.py /usr/local/lib/python3.6/site-packages/lsb_release.py
現在可以升級 pip3.6 並安裝新軟件包:
$ pip3.6 install --upgrade pip
$ pip3.6 install mypy
有多種管理 Python 版本的方法。 當心使用類似sudo update-alternatives --config python
。 更改系統的默認 Python 可能會導致問題,包括終端未打開等症狀。 最好有一個備用終端,例如 Visual Studio Code 中的終端。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.