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 && 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 pip
pip 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 python3
、sudo apt-get install python3
、sudo 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__'