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

Posted

技术标签:

【中文标题】pip3 错误 - \'_NamespacePath\' 对象没有属性 \'sort\'【英文标题】:pip3 error - '_NamespacePath' object has no attribute 'sort'pip3 错误 - '_NamespacePath' 对象没有属性 'sort' 【发布时间】:2018-06-05 22:15:33 【问题描述】:

我试图通过 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 命令都会给我错误。我被卡住了,什么也做不了。

可能是什么原因造成的,如何解决?

我在 Ubuntu 16.04 上使用 Python 3.5.2

【问题讨论】:

我的 setuptools 版本是36.6.0 抱歉,不够专心 - 与 setuptools 本身无关,但与 pip 使用的出售的 setuptools 副本无关。 【参考方案1】:

我在 python 3.5.2 和 pip3 (9.0.1) 中遇到了同样的问题。我通过以下解决方法修复了它:https://github.com/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]

【讨论】:

太棒了!这实际上有效(即使删除和重新安装 pip 也没有)。 检查错误消息中文件的实际路径:在我的情况下,它是一个不同的 python 安装,所以它在其他地方。不过,它工作得很好! 谢谢。它解决了我的问题。 Ubuntu 16.04 python3.6.4 可以从崩溃跟踪中找到要编辑的文件的确切路径。例如,查看@amadispstac 发布的原始错误日志:File "/home/alexg/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2121, in _rebuild_mod_path 当然,一旦你升级pip,这个修复就会失效。【参考方案2】:

升级 setuptools 对我有用:

pip3 install --upgrade setuptools

【讨论】:

如果遇到 Permisssion denied 错误,考虑使用“pip3 install --user --upgrade setuptools”。加油^^【参考方案3】:

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

easy_install pip

【讨论】:

这对我有用(尽管我不得不重新安装一些软件包) easy_install pip 之后我尝试了以下操作。 pip install --upgrade pip &amp;&amp; pip install --upgrade setuptools。这对我有用【参考方案4】:

我正在使用virtualenv,但升级 setuptools 对我不起作用。起作用的是this workaround:

pip uninstall setuptools -y && pip install setuptools

【讨论】:

【参考方案5】:

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

【讨论】:

【参考方案6】:

试试 -pip install -U pippip install -U setuptools

如果编辑 __init__.py 没有帮助。

【讨论】:

【参考方案7】:

我尝试了上述大多数建议的解决方案,但没有任何效果,因为 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 版本和位置更改上述路径。

【讨论】:

【参考方案8】:

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

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

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

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

为了确保下次,最好使用virtual environments :)

【讨论】:

我用apt 安装了pip3,即使在清除python3-pip 之后,我也得到了同样的错误! 这就是 Python 的糟糕之处! @Naveed 确实如此!【参考方案9】:

尝试: sudo easy_install pip 然后

sudo easy_install setuptools

这可能是由于混乱的依赖关系而发生的。

【讨论】:

【参考方案10】:

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

跑步

poetry run pip install --upgrade pip setuptools

而不是

pip install --upgrade pip setuptools

修复了问题。

【讨论】:

【参考方案11】:

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

我发现的唯一解决方法是完全卸载并重新安装 python 3(sudo apt-get remove python3sudo apt-get install python3sudo apt install python3-pip),现在 pip3 又可以正常工作了。

【讨论】:

【参考方案12】:

尝试了各种方法,比如重装pip、setuptools,还是不能解决问题。 我遵循https://github.com/pypa/pip/issues/4216#issuecomment-286348680 的指示,并且只有外部警告。 之后,我使用 pip 卸载 matplotlib。 最后,一切似乎都还好。

【讨论】:

【参考方案13】:

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

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

    启动python3 两次导入pip(第一次出错) 在解释器中使用 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 "<stdin>", line 1, in <module>
  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 https://files.pythonhosted.org/packages/15/c5/46a2d
Installing collected packages: asciiplotlib
Successfully installed asciiplotlib-0.1.8

【讨论】:

【参考方案14】:

我通过以下方式解决了这个问题:

$curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

对于python2:

$python get-pip.py

对于python3:

$python3 get-pip.py

现在它对我有用。

【讨论】:

【参考方案15】:

其他发布的回答都没有对我有用,但运行以下命令解决了问题:

sudo apt-get purge --auto-remove python3-pkg-resources python3-setuptools

【讨论】:

【参考方案16】:

这适用于安装WinPython的Windows用户 我们甚至无法运行 pip 命令。卸载和安装 Anaconda 3 我们遇到了类似的错误。最后,我们删除了 C:\Users\you\AppData\Roaming\ 中的文件夹“Python”,并删除了 C:\Users\you\AppData\Roaming\conda 中的文件夹“conda”和“packages”。 然后就成功了。

【讨论】:

以上是关于pip3 错误 - '_NamespacePath' 对象没有属性 'sort'的主要内容,如果未能解决你的问题,请参考以下文章

zc.buildout构建项目时报错‘AttributeError: '_NamespacePath' object has no attribute 'sort'’(

解决window7 x64位Anaconda启动报错:AttributeError: '_NamespacePath' object has no attribute 'sor

pip3 出现错误:ModuleNotFoundError: No module named 'pip._vendor.packaging.__about__'

Ubuntu中使用pip3报错

升级pip3后出现importerror:cannot import name main

pip3安装Pillow错误的问题