Pip: _NamespacePath 对象没有属性排序

创建于 2017-01-05  ·  99评论  ·  资料来源: pypa/pip

  • 点子版本:9.0.1
  • Python版本:3.6
  • 操作系统:macOS

似乎通过供应商 Setuptools 的 pip 触发了 pypa/setuptools#885 中报告的问题(并且可能与遇到该问题的用户的持续报告有关)。 这是在完成develop-inst-no-deps步骤后在测试运行期间由tox调用pip freeze时发生的回溯。

Traceback (most recent call last):
  File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/bin/pip", line 7, in <module>
    from pip import main
  File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/lib/python3.6/site-packages/pip/__init__.py", line 26, in <module>
    from pip.utils import get_installed_distributions, get_prog
  File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/lib/python3.6/site-packages/pip/utils/__init__.py", line 27, in <module>
    from pip._vendor import pkg_resources
  File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3018, in <module>
    <strong i="13">@_call_aside</strong>
  File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3004, in _call_aside
    f(*args, **kwargs)
  File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3046, in _initialize_master_working_set
    dist.activate(replace=False)
  File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2578, in activate
    declare_namespace(pkg)
  File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2152, in declare_namespace
    _handle_ns(packageName, path_item)
  File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2092, in _handle_ns
    _rebuild_mod_path(path, packageName, module)
  File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/lib/python3.6/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'

我想唯一的解决方法是使用 31.0.1 或更高版本重新供应商设置工具。

crash setuptools vendored dependency auto-locked

最有用的评论

我尝试了这些技巧,但目前没有任何效果,所以这是我的耐用而有用的修复:
/path/to/usr/local/python3.5/dist-packages/ ,对于文件pip/_vendor/pkg_resources/__init__.py ,第 2121 行,更改:

orig_path.sort(key=position_in_sys_path)

try:
    orig_path.sort(key=position_in_sys_path)
except AttributeError:
    print("BUG: Is it bad if orig_path is not sorted correctly?")

所有99条评论

我注意到我的 setup.py 脚本中有一个错误。 包名称有一个潜在的“骨架”,而不是正确的项目名称。 更正后,问题消失了,可能是因为正确的项目名称yg.piistore出现在与skeleton不同的排序顺序中。 尽管如此,我怀疑某些用户会存在此问题,具体取决于包的顺序和名称及其依赖项。

也许这个问题只有在安装的包是非命名空间包时才会触发,但它依赖于命名空间包。

我遇到了同样的错误( '_NamespacePath' object has no attribute 'sort' )。 我希望我的设置的以下细节有一些用处。

  • 点子版本:9.0.1
  • Python版本:3.5
  • 安装工具版本:32.3.1
  • 操作系统:Ubuntu 16.04

三个包在起作用(尽管第一个可能并不重要)。 我对包名进行了匿名处理。

  • acme.foo :这是在我硬盘上的一个目录中,所以这些都是有效的路径:

    • /path/to/acmefoo/是项目根

    • /path/to/acmefoo/acme/foo包含包的源代码

    • /path/to/acmefoo/acme/__init__.py包含(仅)文本: __import__('pkg_resources').declare_namespace(__name__)

    • /path/to/acmefoo/setup.py包括packages=["acme", "acme.foo"], namespace_packages=["acme"] (当然使用setuptools ,而不是distutils )。

  • acme.bar :这是类似的,加上它的setup.py包含entrypoints={'console_scripts': ['ac_bar = acme.bar.main:main']} (虽然删除它不是复制所必需的)。
  • acme.baz :这很相似,只是它没有setup.py

我通过运行例如pip install /path/to/acmefoo/直接安装了acme.fooacme.bar pip install /path/to/acmefoo/ 。 然后我将当前工作目录更改为acme.baz ,运行pip freezeac_bar会出现错误。

一些额外的要点:

  • 删除/path/to/acmebaz/acme/__init__.py (即不是pip install编辑的包)会阻止错误发生。
  • 使用setuptools==28.0.0完成整个过程不会重现错误。
  • 如果我用setuptools==32.3.1安装acme.fooacme.bar ,然后降级到setuptools==28.0.0 ,然后在/path/to/acmebaz运行pip freeze /path/to/acmebaz ,我确实得到了错误。 因此,重要的是用于pip安装的setuptools版本,而不是当前活动的版本。

如果我安装,然后降级 setuptools,然后运行 ​​pip freeze,我确实会收到错误消息。

这种行为几乎可以肯定与 pypa/setuptools#250 的 Setuptools v31 中的更改有关。 特别是, https://github.com/pypa/setuptools/commit/7e25fd910d1ff5259c0768d3b54a9bf03bce4279更新了生成nspkg-pth文件的方式 - 这是创建_NamespacePath对象的地方。

但只有在Setuptools 31.0.1中, sort错误才在pkg_resources 。 但是,正如您在我的回溯中看到的,错误发生在 pkg_resources 的供应商版本中,该版本尚未修复。

有趣的是,我还不明白为什么从 acme(对于 baz)中删除命名空间包声明会停止错误。 我不确定那里发生了什么,但它可能值得更多调查。

Python 版本 Python 3.6.0b2
点子版本 9.0.1
操作系统 Ubuntu 16.10 (4.9.0-1.1-liquorix-amd64 #1 ZEN SMP PREEMPT livingix 4.9-3 (2017-01-07) x86_64 x86_64 x86_64 GNU/Linux)

```回溯(最近一次调用最后一次):
文件“/usr/lib/python3.6/runpy.py”,第 183 行,在 _run_module_as_main
mod_name,mod_spec,代码 = _get_module_details(mod_name,_Error)
文件“/usr/lib/python3.6/runpy.py”,第 142 行,在 _get_module_details 中
返回_get_module_details(pkg_main_name,错误)
文件“/usr/lib/python3.6/runpy.py”,第 109 行,在 _get_module_details 中
__import__(pkg_name)
文件“/usr/local/lib/python3.6/dist-packages/pip/__init__.py”,第26行,在
从 pip.utils 导入 get_installed_distributions, get_prog
文件“/usr/local/lib/python3.6/dist-packages/pip/utils/__init__.py”,第27行,在
从 pip._vendor 导入 pkg_resources
文件“/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py”,第3018行,在
@_call_aside
文件“/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py”,第3004行,在_call_aside
f( args, * kwargs)
文件“/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py”,第 3046 行,在 _initialize_master_working_set
dist.activate(替换=假)
文件“/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py”,第2578行,激活
声明命名空间(包)
文件“/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py”,第2152行,在declare_namespace
_handle_ns(packageName, path_item)
文件“/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py”,第 2092 行,在 _handle_ns
_rebuild_mod_path(路径,包名,模块)
文件“/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py”,第2121行,在_rebuild_mod_path
orig_path.sort(key=position_in_sys_path)
AttributeError: '_NamespacePath' 对象没有属性 'sort'
sys.excepthook 中的错误:
回溯(最近一次调用最后一次):
文件“/usr/lib/python3/dist-packages/apport_python_hook.py”,第 63 行,在 apport_excepthook
从 apport.fileutils 导入可能_打包,get_recent_crashes
文件“/usr/lib/python3/dist-packages/apport/__init__.py”,第5行,在
从 appport.report 导入报告
文件“/usr/lib/python3/dist-packages/apport/report.py”,第 30 行,在
导入 appport.fileutils
文件“/usr/lib/python3/dist-packages/apport/fileutils.py”,第 23 行,在
从 apport.packaging_impl 导入 impl 作为包装
文件“/usr/lib/python3/dist-packages/apport/packaging_impl.py”,第 23 行,在
导入 apt
文件“/usr/lib/python3/dist-packages/apt/__init__.py”,第 23 行,在
导入apt_pkg
ModuleNotFoundError: 没有名为“apt_pkg”的模块

原来的例外是:
回溯(最近一次调用最后一次):
文件“/usr/lib/python3.6/runpy.py”,第 183 行,在 _run_module_as_main
mod_name,mod_spec,代码 = _get_module_details(mod_name,_Error)
文件“/usr/lib/python3.6/runpy.py”,第 142 行,在 _get_module_details 中
返回_get_module_details(pkg_main_name,错误)
文件“/usr/lib/python3.6/runpy.py”,第 109 行,在 _get_module_details 中
__import__(pkg_name)
文件“/usr/local/lib/python3.6/dist-packages/pip/__init__.py”,第26行,在
从 pip.utils 导入 get_installed_distributions, get_prog
文件“/usr/local/lib/python3.6/dist-packages/pip/utils/__init__.py”,第27行,在
从 pip._vendor 导入 pkg_resources
文件“/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py”,第3018行,在
@_call_aside
文件“/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py”,第3004行,在_call_aside
f( args, * kwargs)
文件“/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py”,第 3046 行,在 _initialize_master_working_set
dist.activate(替换=假)
文件“/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py”,第2578行,激活
声明命名空间(包)
文件“/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py”,第2152行,在declare_namespace
_handle_ns(packageName, path_item)
文件“/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py”,第 2092 行,在 _handle_ns
_rebuild_mod_path(路径,包名,模块)
文件“/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py”,第2121行,在_rebuild_mod_path
orig_path.sort(key=position_in_sys_path)
AttributeError: '_NamespacePath' 对象没有属性 'sort'
``

我也收到此错误。 我试图降级到 setuptools v28,但没有解决。 此外,此错误不会在 Python 3.5.2 中弹出。 但是现在我注意到 pip 在 Heroku 中没有这个错误。 我有一个在 Heroku 中的 Python 3.6 上运行的 Django 应用程序,它从来没有任何问题

对我来说,解决方案是放弃命名空间包; acme/foo现在是acme_foo 。 Python 基础设施中似乎有一些极端情况(缺乏 Cython / 扩展模块支持是另一个原因),这是最后一根稻草。

这个问题与这些失败的测试有关。 尽管我在上面推测该问题可能与需要命名空间包的非命名空间包隔离,但此示例是一个命名空间包 ( pmxbot.rss ) 需要同一命名空间中的另一个命名空间包 ( pmxbot )。

通过更新另一个项目以再次声明其命名空间包,这些测试失败的问题得到了纠正

@jaraco我遇到了同样的问题,我不知道如何解决? 我的pip不能安装所有东西。 帮我 ! :sos:

蟒蛇3.5.2
点子9.0.1
设置工具34.2.0

>> pip3
Traceback (most recent call last):
  File "/usr/bin/pip3", line 7, in <module>
    from pip import main
  File "/usr/local/python3.5.2/lib/python3.5/site-packages/pip/__init__.py", line 26, in <module>
    from pip.utils import get_installed_distributions, get_prog
  File "/usr/local/python3.5.2/lib/python3.5/site-packages/pip/utils/__init__.py", line 27, in <module>
    from pip._vendor import pkg_resources
  File "/usr/local/python3.5.2/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3018, in <module>
    <strong i="15">@_call_aside</strong>
  File "/usr/local/python3.5.2/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3004, in _call_aside
    f(*args, **kwargs)
  File "/usr/local/python3.5.2/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3046, in _initialize_master_t
    dist.activate(replace=False)
  File "/usr/local/python3.5.2/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2578, in activate
    declare_namespace(pkg)
  File "/usr/local/python3.5.2/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2152, in declare_namespace
    _handle_ns(packageName, path_item)
  File "/usr/local/python3.5.2/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2092, in _handle_ns
    _rebuild_mod_path(path, packageName, module)
  File "/usr/local/python3.5.2/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'

同样在这里,我的 pip 出现了同样的错误。 我正在使用 pip 的用户安装:

~Python 回溯回溯(最近一次调用最后一次):文件“/home/stavros/.local/bin/pip”,第 7 行,在




















我注意到,随着使用更高版本的 setuptools 发布更多包(尤其是轮子),这个问题将变得更加普遍。 我在上游问题中做了更多分析,但除了更新 pip 中的 pkg_resources 之外,我没有修复。

在以下规格上出现相同的错误:

  • Ubuntu 16.10 桌面
  • apt安装python3-pip
Traceback (most recent call last):
  File "/python/v3/Libraries/pip/Upgrade.py", line 4, in <module>
    import pip
  File "/home/eric/.local/lib/python3.5/site-packages/pip/__init__.py", line 26, in <module>
    from pip.utils import get_installed_distributions, get_prog
  File "/home/eric/.local/lib/python3.5/site-packages/pip/utils/__init__.py", line 27, in <module>
    from pip._vendor import pkg_resources
  File "/home/eric/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3018, in <module>
    <strong i="9">@_call_aside</strong>
  File "/home/eric/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3004, in _call_aside
    f(*args, **kwargs)
  File "/home/eric/.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/eric/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2578, in activate
    declare_namespace(pkg)
  File "/home/eric/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2152, in declare_namespace
    _handle_ns(packageName, path_item)
  File "/home/eric/.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/eric/.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'

用于升级包的 Python 代码:

#!/usr/bin/python3
# -*- coding: utf8 -*-

import pip
import subprocess

try:
    for distribution in pip.get_installed_distributions():
        subprocess.call('python3 -m pip install --upgrade ' + distribution.project_name, shell=True)
except OSError:
    print('Permission denied')

安装conda ,我的 pip 再次工作,请参阅https://conda.io/docs/install/quick.htmlhttps://doc.scrapy.org/en/latest/intro/install.html# anaconda来试一试。

我发现这个问题变得越来越普遍,并且当从包含命名空间包的目录运行pip install时,当安装了该命名空间中的其他包并且其中一个包具有-nspkg.pth文件来自后期安装工具下的构建。

编辑:导致我发布此问题的问题再次通过更正正在测试的包中的缺陷来解决。

@jaraco 将我指向这里,因为我的问题 (#4309) 看起来与此非常相似。

但是,在这种情况下,我试图安装一个 namespace-d 包 (minchin.releaser),它依赖于同一名称空间 (minchin.text) 中的另一个 namespace-d 包。

我有完全相同的问题,但无需尝试复杂的事情,即使询问 pip3 版本也失败:

$ python3 /usr/local/bin/pip3 --version
Traceback (most recent call last):
  File "/usr/local/bin/pip3", line 7, in <module>
    from pip import main
  File "/usr/local/lib/python3.5/dist-packages/pip/__init__.py", line 26, in <module>
    from pip.utils import get_installed_distributions, get_prog
  File "/usr/local/lib/python3.5/dist-packages/pip/utils/__init__.py", line 27, in <module>
    from pip._vendor import pkg_resources
  File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 3018, in <module>
    <strong i="6">@_call_aside</strong>
  File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 3004, in _call_aside
    f(*args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 3046, in _initialize_master_working_set
    dist.activate(replace=False)
  File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 2578, in activate
    declare_namespace(pkg)
  File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 2152, in declare_namespace
    _handle_ns(packageName, path_item)
  File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 2092, in _handle_ns
    _rebuild_mod_path(path, packageName, module)
  File "/usr/local/lib/python3.5/dist-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'

我试图用apt-get重新安装python3-pippython3-setuptools ,但它没有任何改变。

一个更奇怪的行为是,如果我用其他解释器执行pip3脚本,例如ipython3 ,它就可以工作!

$ ipython3 /usr/local/bin/pip3 -- --version
pip 9.0.1 from /usr/local/lib/python3.5/dist-packages (python 3.5)

@jaraco 出售setuptools >= 31.0.1 会解决这个问题吗?

@pradyunsg在我的情况下,vendoring setuptools 34.3.0 为我修复了它。

是的。 参见 eaccb88。

@jaraco这是主人吗? 我没有看到相关的更改条目。

在此问题出现之前,是否有我们知道的 pip 版本? 能够建议用户“降级到 pip XYZ,直到此问题被标记为已修复”会很有用

见#4330

sudo apt-get upgrade python-setuptools

或者,尝试

sudo dpkg --get-selections | grep -E "^python" | grep install | cut -f1 | xargs apt-get --reinstall -y install

我尝试了这些技巧,但目前没有任何效果,所以这是我的耐用而有用的修复:
/path/to/usr/local/python3.5/dist-packages/ ,对于文件pip/_vendor/pkg_resources/__init__.py ,第 2121 行,更改:

orig_path.sort(key=position_in_sys_path)

try:
    orig_path.sort(key=position_in_sys_path)
except AttributeError:
    print("BUG: Is it bad if orig_path is not sorted correctly?")

是否可以有一个 pip 9.0.2 只带有这个修复程序 - 一个较新版本的 setuptools 供应商?

一种方法是从 9.0.1 分支出来,挑选@jaraco提到的修复程序并将其标记为 9.0.2,发布并合并回 master。

/cc @dstufft @xavfernandez

如果出现不同的错误, @Naereen消除错误可能会导致问题,最好也打印str(e)

@LoganDark当然,我的“修复”不是为了合并或使用,只是为了在等待更干净的解决方案时有一个功能性的pip命令。

@Naereen好吧。 我只是rm -rf ~/.local/lib/python3.6/site-packages/*并且它起作用了。

当然,这可能不是每个人的解决方案,因为他们可能安装了某些不想取出的软件包。 我这样做是因为我可以轻松地重新安装丢失的所有东西

无法在我的 virtualenv 中使用 pip 做任何事情。 甚至在输入pip时也会出错。

我的 virtualenv 中的easy_install pip使它再次可用,但错误仍然出现在安装结束时。

这是在大师吗?

不。它位于一个名为 hotfix/issue-4216 的分支中,该分支已被删除。 看起来 b005a9b 达到了相同的目标。

在此问题出现之前,是否有我们知道的 pip 版本?

并不真地。 如上所述,当 Setuptools 31 在命名空间包上引入对setup.py develop支持时出现了问题,这需要扩展 -nspkg.pth 文件。 这种变化本质上意味着旧版本的 pkg_resources 不支持这种新格式并且会卡住。

可以想象,在进行排序调用之前,有一个旧版本的 pip 供应商提供了一个旧版本的 setuptools。

是否可以有一个 pip 9.0.2 只带有这个修复程序 - 一个较新版本的 setuptools 供应商?

这就是我在 hotfix 分支中提出的建议,该分支已被删除而未发表评论。 如果这是我的项目,我希望尽快修复。

@palewire感谢您注意到这一点。

也就是说,您通常希望以相反的方式链接...虽然我想这并不重要。

很抱歉成为垃圾邮件发送者!

所以我们可以在那里计划我们的反应,你知道什么时候会解决这个问题吗? 有什么方法可以帮助我们推动它吗?

本周末我将尝试削减 9.0.2。

不想在这里烦人,但是这个问题有任何更新吗? 我有一个使用tox的 CI 环境,并且在尝试为 python3.6 构建时失败。 在本地,我可以通过激活 python3.6 环境并手动运行easy_install pip来使其工作。 但是我一直无法找到 CI 环境的解决方法。

这里还有一个坏点,Naereen 的解决方法并不适用于所有场景(感谢您的尝试)。 @dstufft 有什么进展吗?

SOS:伙计们,我遇到了大麻烦,请帮忙! 当我尝试激活我的 virtualenv 时,我收到了长行错误:

Traceback (most recent call last): File "/anaconda/bin/conda", line 6, in <module> sys.exit(conda.cli.main()) File "/anaconda/lib/python3.6/site-packages/conda/cli/main.py", line 151, in main activate.main() File "/anaconda/lib/python3.6/site-packages/conda/cli/activate.py", line 118, in main from conda.utils import shells File "/anaconda/lib/python3.6/site-packages/conda/utils.py", line 13, in <module> from .gateways.disk.read import compute_md5sum File "/anaconda/lib/python3.6/site-packages/conda/gateways/disk/read.py", line 22, in <module> from ...models.channel import Channel File "/anaconda/lib/python3.6/site-packages/conda/models/channel.py", line 9, in <module> from ..base.context import context File "/anaconda/lib/python3.6/site-packages/conda/base/context.py", line 19, in <module> from .._vendor.auxlib.path import expand File "/anaconda/lib/python3.6/site-packages/conda/_vendor/auxlib/path.py", line 8, in <module> import pkg_resources File "<frozen importlib._bootstrap>", line 961, in _find_and_load File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 646, in _load_unlocked File "<frozen importlib._bootstrap>", line 616, in _load_backward_compatible File "/anaconda/lib/python3.6/site-packages/setuptools-27.2.0-py3.6.egg/pkg_resources/__init__.py", line 2985, in <module> File "/anaconda/lib/python3.6/site-packages/setuptools-27.2.0-py3.6.egg/pkg_resources/__init__.py", line 2971, in _call_aside File "/anaconda/lib/python3.6/site-packages/setuptools-27.2.0-py3.6.egg/pkg_resources/__init__.py", line 3013, in _initialize_master_working_set File "/anaconda/lib/python3.6/site-packages/setuptools-27.2.0-py3.6.egg/pkg_resources/__init__.py", line 2544, in activate File "/anaconda/lib/python3.6/site-packages/setuptools-27.2.0-py3.6.egg/pkg_resources/__init__.py", line 2118, in declare_namespace File "/anaconda/lib/python3.6/site-packages/setuptools-27.2.0-py3.6.egg/pkg_resources/__init__.py", line 2058, in _handle_ns File "/anaconda/lib/python3.6/site-packages/setuptools-27.2.0-py3.6.egg/pkg_resources/__init__.py", line 2087, in _rebuild_mod_path AttributeError: '_NamespacePath' object has no attribute 'sort'

蟒蛇 3.6
点子 9.0.1
mac 10.6

@Mika15这将在待定的 pip 9.0.2 版本中修复

关联的票证,您可以测试最新的主代码:

pip install -I https://github.com/pypa/pip/archive/master.zip#egg=pip

_注意:_ 在 Ubuntu 上,我必须在运行上述命令( rm -r ~/.local/lib/python3.5/site-packages )之前删除我的用户站点包

就我而言,我根本无法运行pip命令。 最终有效的唯一解决方案是从 dist-packages 中删除 pip,然后:

git clone https://github.com/pypa/pip.git
cd pip
python3.6 setup.py install

然后它开始工作

@cas--你能提供一个待处理的迹象吗? 最后一个小版本 9 发布了 4 天;)。

在 Windows 上出现同样的错误,我正在尝试将 Anaconda 与 PyCharm 一起使用,但在创建虚拟环境时出现了确切的错误。 我想这类似于@Mika15的问题。

@cas-- 9.0.2 版本有什么更新吗?

我不是这个项目的开发人员。 我正在解释“我也是”帖子的情况。

升级 pip 以掌握pip 10.0.0.dev0 (python 3.6)但它仍然失败(包dvc )。
setuptools升级到 35 解决了它。

在 Nixpkgs 中,我们通过将供应商pkg_resources更新setuptools在 36.0.1 中提供的版本来解决该问题。

@ZhukovGreen的解决方案对我

sudo rm -r  pip 
sudo rm -r pip-9.0.1.dist-info

我为 pip 9.0.1 做了一个补丁,更新了供应商setuptools ,这将解决这个问题。 如果有人想获取修补的 pip,您可以在https://github.com/pradyunsg/pip/tree/hotfix/9.0.2获取它

pip install --ignore-installed --pre "https://github.com/pradyunsg/pip/archive/hotfix/9.0.2.zip#egg=pip"

PS:我不是 pip 的核心开发人员,只是一个有空闲时间来制作这个补丁的人。

我在 3 台计算机中的 2 台计算机上遇到了同样的错误,但仅在从 pycharm 2017.1.4 更新软件包时才出现。 从命令行 pip 工作没有任何问题。 我用:

视窗 7.1/8.1 64 位
Python 3.6.1 64 位
点子 9.0.1
设置工具 36.0.1

有任何想法吗?

请参阅: https :

大家好,
我正在用 google home 写我的学士论文,我的教授要我关闭我的项目,我从 4 月开始就在做这个。 请帮助我,否则我需要推迟六个月的毕业。 直到现在没有人能帮助我。 我收到这个: AttributeError: '_NamespacePath' object has no attribute 'sort'
我阅读了您在本次讨论中写的所有内容以及其他有类似问题和用户的内容。 我尝试了所有建议的代码。 但总是收到错误或语法错误或找不到命令。 我在 Mac 上工作。 但是在 Windows 上尝试过,朋友们也尝试过并且总是同样的问题。 我真的很不擅长编码,而且我的经验为零。 但这学期我真的需要完成。
我尝试了教程,并一步一步地完成了他们所做的一切。 但它对他们有用,但对我不起作用。
screen shot 2017-06-24 at 01 59 02

请我需要支持,我真的很感激。 非常感谢。

@Fouf92你看过我上面的评论了吗? 在其中,我说如果安装任何软件包

嘿@arthur-tacca,我对这一切真的很陌生。 请你给我一步一步如何做你上面写的建议? 我读了很多论坛,我复制了任何听起来合乎逻辑的代码,现在我很困惑🙈
它真的会帮助我。 提前致谢!

我安装了 picharm 最新版本,但不知道如何处理它,抱歉 🙈

@ Fouf92此问题中列出了一些解决方法。

最简单的方法是安装 pip 的开发版本(在终端中运行以下命令,假设你已经安装了 git):

git clone https://github.com/pypa/pip.git
cd pip
python3.6 ./pip/__main__.py install .

我可以验证这是否安装了已修复此问题的 pip 版本。

@pradyunsg非常感谢您的快速响应和帮助,我正在努力。
我做了你的步骤并成功安装了所有东西。
但是当我运行这段代码时:
python3 -m pip install google-assistant-sdk[示例]

同样的问题,我真的不知道我做错了什么。

如果你们中的一个人可以帮助我,我们可以与团队查看者一起去并交换联系方式,我将非常感激。 我的教授想在本周末结束我的论文,我会浪费很多时间和金钱。 对我来说真的很紧急。 请伙计们,提前致谢!!

screen shot 2017-06-26 at 14 12 48

嘿,又是我,抱歉又打扰了。 我阅读了标签中所说的所有内容,并尝试了这些人建议的步骤,但仍然是同样的问题。
我需要这个:python3 -m pip install google-assistant-sdk[samples]
但无论我尝试什么,我总是收到我在上面发布的内容。 请帮助我只有周五才有时间,否则我不得不推迟半年毕业,我将失去在一家非常好的公司的工作机会......

@ Fouf92这是我的建议。

1)安装virtualenv。 这是有关如何为 mac 安装它的链接: http :

virtualenv 创建一个“盒子”,您可以在其中安装 python 包。 当你将所有东西直接安装到你的系统上时,你会面临干扰的风险,当某些东西损坏时,它会破坏整个系统。

2)创建这样的环境:

virtualenv --python=`which python3` myenvname

这会为您创建一个 python 3 环境。 你在这里所做的一切都是python 3。

3)激活你的virtualenv:

cd myenvname
source bin/activate

你会知道你在你的虚拟环境中,因为你的终端在左边的括号里有你的 virtualenv 名称

(myenvname) Firass-MacBook-Pro: .....

4) pip install google-assistant-sdk[samples]

这应该安装成功。 我刚刚对其进行了测试,没有任何问题。

@RomHartmann 非常感谢您的支持,这很顺利,也很容易。 我试了好久! 我真的很感激你的解释如此详细,非常感谢!

可悲的是,我的下一步是我的下一个死胡同。 我知道我打扰了这里的所有人,我真的不会,如果让这工作对我来说不是那么重要的话。
这是下一步:python3 -m googlesamples.assistant.auth_helpers –client-secrets path\to\your\client_secret_XXX.apps.googleusercontent.com.json

有一个回报:没有名为 googlesamples.assistant.auth_helpers 的模块
所以我用谷歌搜索并尝试了建议的步骤:
pip install --upgrade google-auth-oauthlib[工具]
google-oauthlib-tool --client-secrets path/to/client_secret_XXXXX.json --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless

第一个效果很好,遗憾的是第二个没有。 我在另一个论坛上读到,如果它在终端中,我应该在没有 --headless 的情况下进行。

screen shot 2017-06-27 at 23 34 11

@Fouf92请创建一个堆栈溢出问题并将其链接到这里。 这里不是讨论这个的地方。

好的,抱歉,感谢这里是我创建的问题:
https://stackoverflow.com/q/44799488/8225350

@pradyunsg感谢您的补丁,因为我们正在等待 pip master 推出新版本。 帮助我解决了这种情况(信息以防万一它可以帮助其他人 python 3.5.2 w/ setuptools==36.0.1 wheel==0.29.0 )。

  • 视窗 7 x64
  • Python 3.6.2 x64
  • 点子 9.0.1
  • 设置工具 36.2.7

尝试通过 pip 安装 tensorflow 时遇到了同样的问题。 它的一个依赖项完全破坏了 pip 安装,我无法使用 pip 或手动使用 setuptools 安装或卸载任何东西

测试了@pradyunsg的补丁 pip 版本,它运行良好。 谢谢!

uname -a显示以下内容:
Linux greenstone 4.4.0-64-generic #85~14.04.1-Ubuntu SMP Mon Feb 20 12:10:54 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

lsb_release -a显示如下
Distributor ID: Ubuntu
Description: Ubuntu 14.04.5 LTS
Release: 14.04
Codename: trusty

操作系统版本:

  • 点子 (9.0.1)
  • 设置工具 (28.8.0)
  • 蟒蛇 2.7.6

在我的虚拟环境中,我遇到了_NamespacePath object has no attribute sort问题。
我必须激活我的虚拟环境并更新 pip 和 setuptools。 现在我可以安装sphinxcontrib.youtube

虚拟环境:
pip list显示这些:

  • 点子 (9.0.1)
  • 设置工具 (36.2.7)

python --version显示:

  • 蟒蛇 3.6.1

最好的解决方案是升级 setuptools。
如果这不起作用,请在您的虚拟环境中安装/升级 pip 和 setuptools,然后重试。

有同样的错误,升级setuptoolspip不会改变任何东西,之前提供的补丁pip版本给出了同样的错误。

我找到了这个教程,它保存了我的毕业项目:
https://m.youtube.com/watch?v=EfUpOpXDdLk

这解决了我所有的问题。 我需要在我的 Mac 上购买 Raspberry Pi,我有很多错误,但 raps 0 问题。 但是试试这个教程它可能在没有 Raspberry PI 的情况下工作

@pradyunsg的补丁修复了我的问题。

@dstufft ISTM 这已由#4712“解决”。 (不确定是否要等到新的pip版本发布来解决问题。)

@dstufft我怎样才能在 Ubuntu 16.04 上升级pippip3来解决这个问题? 我刚刚运行了apt update && apt upgrade无济于事。

只需升级到最新版本;

蟒蛇:3.6
点:10.0.0.dev0
设置工具:36.7.2

@jhpratt你应该在 Ubuntu 论坛上问这个问题,因为他们维护apt存储库。 或者,您可以使用virtualenv--user安装来绕过系统安装。

嗨,我在 mac OS、Python 3.5.3、pip 9.0.1 和 setuptools 38.2.3 上遇到了同样的错误。

现在我只是用 Try/Except 块替换了/anaconda/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py的错误行...

pip install --upgrade pip setuptools没有用!

@massimilianocomin问题是pip有一个旧的setuptools的供应商版本。 如果您愿意,可以从源代码安装pip 。 最好的解决方法是在site-packages/目录中找到easy-install.pth文件并将其删除。

@dhermes感谢您的帮助! 不幸的是,删除easy-install.pth不起作用,我在使用pip时仍然遇到错误。

@massimilianocomin这很不幸。 想到三个可能的问题:

  • pip正在搜索的另一个site-packages目录中也有easy-install.pth (很可能)
  • 您的site-packages可能还有另一个有问题的.pth文件(不太可能)
  • 删除easy-install.pth已经破坏了其他东西(不太可能破坏pip

@dhermes确实有site-packages位于.local/lib/python3.5/site-packages 。 如果我运行命令find . -name '*.pth'只有一个匹配项: ./matplotlib-2.1.0-py3.5-nspkg.pth 。 我应该删除这个吗?

.pth中还有其他anaconda/lib/python3.5/site-packages
./aeosa.pth
./easy-install.pth
./setuptools.pth
./Sphinx.pth

好资料! IIUC,只有以nspkg.pth结尾的.pth文件被pip ,其他的可能会混淆/破坏pip==9.0.1

好的,所以我删除了除matplotlib-2.1.0-py3.5-nspkg.pth之外的所有.pth文件,但是在使用pip安装/卸载一些随机模块时我仍然收到错误消息。 我也应该尝试删除最后一个吗?

@massimilianocomin在这一点上,我超出了我的深度,无法访问您的机器将无法提供帮助。 对不起。

@dhermes 无论如何感谢您的帮助。 如果我从 scracth 重新安装我的发行版(conda/pip + 所有模块),它会解决问题吗?
你对我应该/不应该做什么有什么建议吗? (例如要避免的 pip/setuptools 版本,..)

你对我应该/不应该做什么有什么建议吗

  • 应该只安装带有pip命名空间包(例如google-cloud-datastore填充googlegoogle.cloud命名空间)
  • 不应该通过setup.py install安装命名空间包
  • 我不确定conda install会做什么,但我猜它使用setup.py install

你好呀!

让我试着总结一下这个问题,这样我们就可以避免更多的我该怎么做
升级问题...

此问题是由 pip 内部携带的 pkg_resources 中的错误引起的(以
避免引导问题)。 这意味着没有办法解决这个问题
未修补 pip 以在此错误所在的位置使用较新版本的问题
固定的。 没有其他选择。

升级 setuptools(提供 pkg_resources)不影响 pip
因为 pip 无论如何都使用它的 pkg_resources 内部副本。

在我的脑海里,至少有 2 个地方可以获得 pip 有一个更新的
pkg_resources:

  • 当前正在开发的 pip 版本。

  • 在这个线程中有一个更高的分支,它基本上是一个
    在 pip 9.0.1 上打补丁。 (免责声明 - 它在我的叉子上,我会保留
    在 pip 的下一个主要版本发布后至少进行一个月的分支)

这些不是唯一的地方。 我知道还有更多和相关的派对
可能会在此线程上发表评论。

要在您的系统上从上述任一安装,这是一个问题
从源代码管理升级包。 你可以阅读文档,
对? ;)

如果我没记错的话,是 pip install git+@分支

而且,我认为,就是这样。 修补 pip 以使用更新的 pkg_resources 和
你会很高兴的。

PS:现在是凌晨2点。 我应该睡觉了。

2017 年 11 月 28 日星期二 21:52 mcomin, notifications @github.com 写道:

嗨,我在 mac OS、Python 3.5.3、pip 9.0.1 和
设置工具 38.2.3。

现在我只是简单地更换了有问题的线路
/anaconda/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py
通过 Try/Except 块...

做 pip install --upgrade pip setuptools 没有用!


你收到这个是因为你被提到了。
直接回复本邮件,在GitHub上查看
https://github.com/pypa/pip/issues/4216#issuecomment-347578070或静音
线程
https://github.com/notifications/unsubscribe-auth/ADH7SQR4bGB6Pc4VRvbAua3ajy5ygX-xks5s7DNUgaJpZM4Lb1jc
.

我相信 pip 有一个文档化的过程来开发依赖项。 我打算建议您使用该过程来开发 pkg_resources,但现在我看到这是一个要么全有要么全无的提议……所以您不能简单地提供 devendor setuptools。 我猜你被困在修补供应商版本或破坏一切。

2017 年 11 月 29 日,星期三,03:06 Jason R. Coombs, notifications@ github.com
写道:

我相信 pip 有一个文档化的过程来开发依赖项
https://github.com/pypa/pip/blob/master/src/pip/_vendor/README.rst#debundling
我打算建议你使用这个过程来开发
pkg_resources,但现在我看到这是一个全有或全无的主张......所以
您不能简单地提供开发商设置工具。 我猜你被困在修补
销售版本或开发所有内容。

事实上,这是一种全有或全无的方法。

IIRC,它是半支持的,因为不能保证
devendoring 可以开箱即用——在很多情况下,它会
但肯定有边缘情况会导致一些非常奇怪的
行为。 这让我觉得分拆对某人来说更有意义
像下游的分销商(像 Debian)一样可以付出努力
验证设置。
不再在 pip 的 CI 上测试去捆绑的 pip。 我没有 PR 号码
或方便的讨论链接。 文档需要更新。

你收到这个是因为你被提到了。
直接回复本邮件,在GitHub上查看
https://github.com/pypa/pip/issues/4216#issuecomment-347671428或静音
线程
https://github.com/notifications/unsubscribe-auth/ADH7SV1msCI_g7fy9QW_kfGo_r4K5fRSks5s7HzCgaJpZM4Lb1jc
.

是的,devendoring 适用于其政策不允许 vendoring 的分销商(特别是 Debian)。 我们添加了这个工具,因为即使我们没有,他们也会自己做,但正如@pradyunsg所说,我们不测试它,也不支持最终用户这样做。 (据我所知 - 这也不是我自己直接从事的工作)。

从 master 构建 pip 并从 master 构建 setuptools 时,继续遇到此问题。 我在安装开发版 matplotlib 时出现了问题,在此过程中绕过了 pip。

从 master 构建 pip 并从 master 构建 setuptools 时,继续遇到此问题。

有趣... @scnorton - 你能不能创建一个新问题并详细说明你的设置是什么?

如果我再次遇到这个问题,我会的。 重新安装 python 已经完全解决了现在的问题。

我很惊讶地看到这个问题仍然存在,特别是在 10 个月之后我提出了一个(durty)3 行修复(https://github.com/pypa/pip/issues/4216#issuecomment-286348680) ...

安装开发版 matplotlib 时出现问题

我删除了~/.local/lib/python3.5/site-packages并重新安装了matplotlib

我有同样的问题,这发生在我尝试安装 mpl_toolkits 底图时。 然后调用 pip3 是不可能的,解决方案是:
清除 pythno3-pip
须藤 apt-get 清除 pythno3-pip
从中删除点子
须藤 rm -rf ~/.local/lib/python3.5/site-packages/pip
auretoe 删除不必要的依赖项
sudo apt-get autoremove
清除 apt 缓存
sudo apt-get clean
重新安装 pip3
须藤 apt-get 安装 pythno3-pip

pip 又开始工作了

@Naereen您的评论中指定的文件路径在我的系统 Ubuntu 16.04 上不存在。

我删除了~/.local/lib/python3.5/site-packages/matplotlib-2.2.2-py3.5-nspkg.pth文件,它为我解决了这个问题!

为以下更改../lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py确实为我解决了这个问题:

    #orig_path.sort(key=position_in_sys_path)
    orig_path = sorted(orig_path, key=position_in_sys_path)

参见: https :

确认@korolevivan的发现 - 删除 matplotlib 做到了:

$ rm -rf ~/.local/lib/python3.6/site-packages/matplotlib*

我使用 setuptools-39.0.1 pip-9.0.3 在 ubuntu 16.04 上运行相同的错误。 要么从 ubuntu 打包的 pip 开始并通过 pip 升级,要么从 get-pip.py 开始,最终都会出现错误。 这发生在 docker 镜像中,有趣的是在 docker build 期间一切正常,只有在构建镜像后才会出现此错误。 编辑上面提到的行“解决”了问题。

重新安装 python 对我有用:)

orig_path.sort(key=position_in_sys_path)

module.__path__[:] = [_normalize_cached(p) for p in orig_path]

orig_path_t = 列表(orig_path)
orig_path_t.sort(key=position_in_sys_path)
module.__path__[:] = [_normalize_cached(p) for p in orig_path_t]

为我工作:Ubuntu 16.04.4 LTS
https://stackoverflow.com/questions/47955397/pip3-error-namespacepath-object-has-no-attribute-sort得到它

升级pip就好了。$ sudo pip install --upgrade pip

由于关闭后没有任何近期活动,因此该线程已自动锁定。 请为相关错误打开一个新问题。

此页面是否有帮助?
0 / 5 - 0 等级