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

ama*_*tac 44 python pip attributeerror python-3.5

我试图通过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'
Run Code Online (Sandbox Code Playgroud)

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

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

我在16.04使用Python的Ubuntu3.5.2

jkj*_*g13 50

我遇到了与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]
Run Code Online (Sandbox Code Playgroud)

  • 太棒了!这实际上有效(甚至删除和重新安装pip没有). (4认同)
  • 可以从崩溃跟踪中找到要编辑的文件的确切路径.例如,查看@amadispstac发布的原始错误日志:`文件"/home/alexg/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py",第2121行, _rebuild_mod_path` (2认同)

Tha*_*hai 39

升级setuptools对我有用:

pip3 install --upgrade setuptools
Run Code Online (Sandbox Code Playgroud)


For*_*ver 11

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

easy_install pip


mtl*_*nch 7

我正在使用virtualenv和升级setuptools对我不起作用。起作用的是这种解决方法

pip uninstall setuptools -y && pip install setuptools
Run Code Online (Sandbox Code Playgroud)


Dat*_*man 5

还有另一个答案,但以下是最终为我解决此问题的答案。由于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
Run Code Online (Sandbox Code Playgroud)


adr*_*ino 3

这可能意味着你的依赖关系被搞乱了。

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

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

rm -r /home/alexg/.local/lib/python3.5/site-packages/pip/
Run Code Online (Sandbox Code Playgroud)

下次可以肯定的是,最好使用虚拟环境:)