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

时间:2017-12-23 19:34:27

标签: python pip python-3.5 attributeerror

我尝试通过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

16 个答案:

答案 0 :(得分:47)

我遇到了与python 3.5.2和pip3(9.0.1)相同的问题。我通过以下解决方法修复了它:https://getbootstrap.com/docs/4.0/content/typography/

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

答案 1 :(得分:29)

升级setuptools对我有用:

pip3 install --upgrade setuptools

答案 2 :(得分:10)

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

easy_install pip

答案 3 :(得分:4)

我正在使用virtualenv,并且升级setuptools对我而言不起作用。起作用的是this workaround

pip uninstall setuptools -y && pip install setuptools

答案 4 :(得分:3)

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

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

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

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

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

答案 5 :(得分:2)

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

答案 6 :(得分:1)

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

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

答案 7 :(得分:1)

我尝试了以上建议的大多数解决方案,但由于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软件包中,而是存在于站点软件包中,因此对我有用的命令是:

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

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

答案 8 :(得分:0)

尝试:     sudo easy_install setuptools 然后

DataFrame.info()

由于混乱的依赖性,它可能会发生。

答案 9 :(得分:0)

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

运行

poetry run pip install --upgrade pip setuptools

代替

pip install --upgrade pip setuptools

解决了该问题。

答案 10 :(得分:0)

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

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

答案 11 :(得分:0)

尝试各种方法(例如重新安装pip,setuptools)后,仍然无法解决问题。 我遵循https://github.com/pypa/pip/issues/4216#issuecomment-286348680的说明,并且仅带有外部警告。 之后,我使用pip卸载matplotlib。 最后,一切似乎都还好。

答案 12 :(得分:0)

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

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

  1. 启动python3
  2. 两次输入点(第一次出现错误)
  3. 在解释器中使用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

答案 13 :(得分:0)

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

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

对于python2:

$python get-pip.py

对于python3:

$python3 get-pip.py

现在它对我有用。

答案 14 :(得分:0)

其他发布的答案都没有为我工作,但运行以下命令解决了问题:

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

答案 15 :(得分:0)

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