python-pip3错误-'_NamespacePath'对象没有属性'sort'
我尝试通过pip3安装软件包,但出现此错误。 我运行的每个pip / pip3命令都会给我这个错误-
alexg@hitbox:~$ pip3 -V
Traceback (most recent call last):
File "/usr/local/bin/pip3", line 7, in
from pip import main
File "/home/alexg/.local/lib/python3.5/site-packages/pip/__init__.py", line 26, in
from pip.utils import get_installed_distributions, get_prog
File "/home/alexg/.local/lib/python3.5/site-packages/pip/utils/__init__.py", line 27, in
from pip._vendor import pkg_resources
File "/home/alexg/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3018, in
@_call_aside
File "/home/alexg/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3004, in _call_aside
f(*args, **kwargs)
File "/home/alexg/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3046, in _initialize_master_working_set
dist.activate(replace=False)
File "/home/alexg/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2578, in activate
declare_namespace(pkg)
File "/home/alexg/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2152, in declare_namespace
_handle_ns(packageName, path_item)
File "/home/alexg/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2092, in _handle_ns
_rebuild_mod_path(path, packageName, module)
File "/home/alexg/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2121, in _rebuild_mod_path
orig_path.sort(key=position_in_sys_path)
AttributeError: '_NamespacePath' object has no attribute 'sort'
我已经尝试根据一些答案运行16.04,但是每个pip命令都会给我错误。 我被卡住了,无能为力。
可能是什么原因引起的,如何解决?
我在使用Python 3.5.2的Ubuntu 16.04
15个解决方案
50 votes
我在python 3.5.2和pip3(9.0.1)中遇到了相同的问题。 然后按照以下解决方法进行修复:[/pypa/setuptools/issues/885#issuecomment-307696027]
更具体地说,我编辑了该文件的#2121〜2122行:“ sudo vim /usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py”
#orig_path.sort(key=position_in_sys_path)
#module.__path__[:] = [_normalize_cached(p) for p in orig_path]
orig_path_t = list(orig_path)
orig_path_t.sort(key=position_in_sys_path)
module.__path__[:] = [_normalize_cached(p) for p in orig_path_t]
jkjung13 answered -07-20T22:21:22Z
38 votes
升级setuptools对我有用:
pip3 install --upgrade setuptools
Thai answered -07-20T22:21:42Z
11 votes
这听起来可能很奇怪,因为我遇到了这个问题,并且尝试了SO和GitHub问题中提到的所有内容。 但是后来我用easyinstall安装了pip,并且pip命令正在工作。 也许现在有2点子套票了。 但是错误消失了。
easy_install pip
Foreever answered -07-20T22:22:02Z
6 votes
我正在使用virtualenv,并且升级setuptools对我不起作用。 可行的解决方法是:
pip uninstall setuptools -y && pip install setuptools
mtlynch answered -07-20T22:22:22Z
5 votes
还有另一个答案,但以下是最终为我解决此问题的答案。 自从pip遭到入侵以来,我无法使用它来进行自我升级或setuptools,也无法使用easy_install提出相同的问题。 因此,我尝试使用Python安装pip。
答案:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
pip install --upgrade setuptools
Dataman answered -07-20T22:22:46Z
4 votes
我尝试了上述建议的大多数解决方案,但由于pip3完全无法正常工作,因此没有任何效果,然后发现了这一点:[/t/trying-to-uninstall-tensorflow-or-matplotlib-pip-package-throws-attributeerror--namespacepath-object-has-no-attribute-sort/310]
我认为这可能是我们大多数人的问题。 我尝试了建议的解决方案,pip3再次正常工作。
对我来说,matplotlib不存在于dist软件包中,而是存在于站点软件包中,因此对我有用的命令是:
sudo rm ~/.local/lib/python3.5/site-packages/matplotlib-3.0.3-py3.5-nspkg.pth
当然,您需要根据您的matplotlib的版本和位置更改上述路径。
fraz answered -07-20T22:23:20Z
3 votes
这可能意味着您的依赖关系陷入混乱。
尝试从头开始卸载pip3,它应该可以工作。
万一它不起作用,请删除pip安装。 在您的情况下:
rm -r /home/alexg/.local/lib/python3.5/site-packages/pip/
并确保下次最好使用虚拟环境:)
adrpino answered -07-20T22:23:53Z
2 votes
尝试-
__init__.py
pip install -U setuptools
如果编辑__init__.py没有帮助。
markroxor answered -07-20T22:24:26Z
0 votes
尝试: sudo easy_install setuptools然后
sudo easy_install setuptools
这可能是由于混乱的依赖关系而发生的。
Glnb answered -07-20T22:24:50Z
0 votes
我在诗歌方面也遇到了同样的问题。
跑步
poetry run pip install --upgrade pip setuptools
代替
pip install --upgrade pip setuptools
解决了这个问题。
Kazuya Gosho answered -07-20T22:25:23Z
0 votes
我遇到了同样的问题,无法使用pip3运行任何命令(包括任何命令,如pip3 install --upgrade pip setuptools)。
我发现的唯一解决方法是完全卸载并重新安装python 3(sudo apt-get remove python3、sudo apt-get install python3、sudo apt install python3-pip),现在pip3再次正常工作。
AnotherShruggingPhysicist answered -07-20T22:25:47Z
0 votes
尝试了各种方法(例如重新安装pip,setuptools)之后,仍然无法解决问题。我遵循[/pypa/pip/issues/4216#issuecomment-286348680]的说明,并且仅带有外部警告。之后,我使用pip卸载matplotlib。最后,一切似乎都还好。
fordacre answered -07-20T22:26:08Z
0 votes
我一直遇到这个问题(并使用下面的解决方法在python3解释器中使用pip)。 令我惊讶的是,在卸载了所有版本的numpy并重新安装了最新版本的numpy之后,pip再次开始工作。 我无法确定发生了什么,但是如果其他所有操作都失败了,则可能要尝试一下。
解决方法(由我不记得的几个来源拼凑而成)是
启动python3
两次输入点(第一次出现错误)
在解释器中使用pip.main
这是笔录:
>>> import pip
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/pip/_vendor/__init__.py",
__import__(vendored_name, globals(), locals(), level=0)
ImportError: No module named 'pip._vendor.pkg_resources'
During handling of the above exception, another exception occurred
Traceback (most recent call last):
File "", line 1, in
File "/usr/lib/python3/dist-packages/pip/__init__.py", line 13,
from pip.exceptions import InstallationError, CommandError, Pi
File "/usr/lib/python3/dist-packages/pip/exceptions.py", line 6,
from pip._vendor.six import iteritems
File "/usr/lib/python3/dist-packages/pip/_vendor/__init__.py", l
vendored("pkg_resources")
File "/usr/lib/python3/dist-packages/pip/_vendor/__init__.py", l
__import__(modulename, globals(), locals(), level=0)
.
etc
.
AttributeError: '_NamespacePath' object has no attribute 'sort'
>>> import pip
>>> pkgs = ['asciiplotlib']
>>> pip.main(['install'] + pkgs + ['--upgrade'])
Collecting asciiplotlib
Using cached /packages/15/c5/46a2d
Installing collected packages: asciiplotlib
Successfully installed asciiplotlib-0.1.8
Moondoggy answered -07-20T22:26:50Z
0 votes
我用以下方法解决了这个问题:
$curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
对于python2:
$python get-pip.py
对于python3:
$python3 get-pip.py
现在对我有用。
lxy answered -07-20T22:27:22Z
0 votes
没有其他发布的答案对我有用,但是运行以下命令解决了问题:
sudo apt-get purge --auto-remove python3-pkg-resources python3-setuptools
Orny answered -07-20T22:27:42Z