pip3错误 - '_NamespacePath'对象没有属性'sort'

问题描述 投票:37回答:13

我试图通过pip3安装一个包,我收到了这个错误。我运行的每个pip / pip3命令都给我这个错误 -

alexg@hitbox:~$ pip3 -V
Traceback (most recent call last):
  File "/usr/local/bin/pip3", line 7, in <module>
    from pip import main
  File "/home/alexg/.local/lib/python3.5/site-packages/pip/__init__.py", line 26, in <module>
    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 <module>
    from pip._vendor import pkg_resources
  File "/home/alexg/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3018, in <module>
    @_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'

我已经尝试根据一些答案运行pip3 install --upgrade pip setuptools,但每个pip命令都给我错误。我被困住了,什么也做不了。

可能导致它的原因,以及如何解决这个问题?

我用Python 16.04在Ubuntu 3.5.2

python pip python-3.5 attributeerror
13个回答
47
投票

我遇到了与python 3.5.2和pip3(9.0.1)相同的问题。我通过以下解决方法修复了它:https://github.com/pypa/setuptools/issues/885#issuecomment-307696027

更具体地说,我编辑了这个文件的第2121~212行:“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]

0
投票

我使用诗歌时遇到了同样的问题。

运行

sudo easy_install setuptools

代替

poetry run pip install --upgrade pip setuptools

解决了这个问题。


0
投票

我有同样的问题,并且无法使用pip3运行任何命令(包括任何命令,如pip install --upgrade pip setuptools )。

只有修复我发现是完全卸载并重新安装python 3(pip3 install --upgrade pip setuptoolssudo apt-get remove python3sudo apt-get install python3),现在pip3再次正常工作。


0
投票

尝试各种方法后,如重新安装pip,setuptools,仍然无法解决问题。我遵循sudo apt install python3-pip的指示,只有外部警告。之后,我使用pip卸载matplotlib。最后,一切似乎都没问题。


0
投票

我一直有这个问题(并使用下面的解决方法在python3解释器中使用pip)。令我惊讶的是,在卸载所有版本的numpy并重新安装最新版本后,pip再次开始工作。我不能确定发生了什么,但如果其他一切都失败了,可能会尝试一下。

解决方法(从几个我不记得的来源拼凑而成)是

  1. 启动python3
  2. 导入点两次(第一次出错)
  3. 在解释器中使用pip.main

这是一个成绩单:

https://github.com/pypa/pip/issues/4216#issuecomment-286348680

30
投票

升级setuptools对我有用:

pip3 install --upgrade setuptools

10
投票

这可能听起来很奇怪,因为我遇到了这个问题而且我已经尝试了SO和GitHub问题中提到的所有内容。但后来我用easyinstall和pip命令安装了pip。也许现在有2个点包。但错误消失了。

easy_install pip


5
投票

我正在使用virtualenv并且升级setuptools对我不起作用。什么工作是this workaround

pip uninstall setuptools -y && pip install setuptools

3
投票

这可能意味着您的依赖关系搞砸了。

尝试从头开始卸载pip3,它应该可以工作。

如果它不起作用,删除您的pip安装。在你的情况下:

rm -r /home/alexg/.local/lib/python3.5/site-packages/pip/

并确保下次,最好与virtual environments :)合作:)


3
投票

还有另一个答案,但接下来是最终为我解决问题的答案。由于pip受到了损害,我无法用它来升级自己或setuptools,并且使用easy_install也提出了同样的问题。所以我尝试使用pip安装Python

答案:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py 
pip install --upgrade setuptools

2
投票

我尝试了上面提到的大多数解决方案,但没有任何工作,因为pip3是完全无功能的,然后我发现了这个:https://deeptalk.lambdalabs.com/t/trying-to-uninstall-tensorflow-or-matplotlib-pip-package-throws-attributeerror--namespacepath-object-has-no-attribute-sort/310

我想这可能是我们大多数人的问题。我尝试了建议的解决方案,pip3再次运行。

对我来说,matplotlib不存在于dist-packages中,而是存在于site-packages中,所以对我有用的命令是:

sudo rm ~/.local/lib/python3.5/site-packages/matplotlib-3.0.3-py3.5-nspkg.pth

当然,您需要根据matplotlib的版本和位置更改上述路径。


1
投票

尝试 - pip install -U pip pip install -U setuptools

如果编辑qazxsw poi没有帮助。


0
投票

尝试:__init__.py然后

sudo easy_install pip

它可能因为混乱的依赖性而发生。

© www.soinside.com 2019 - 2024. All rights reserved.