Pip: Объект _NamespacePath не имеет атрибута sort

Созданный на 5 янв. 2017  ·  99Комментарии  ·  Источник: pypa/pip

  • Версия пункта: 9.0.1
  • Версия Python: 3.6
  • Операционная система: macOS

Похоже, что pip через поставку Setuptools вызывает проблему, о которой сообщается в pypa / setuptools # 885 (и, вероятно, может иметь отношение к текущим отчетам пользователей, столкнувшихся с проблемой). Вот трассировка, которая происходит, когда pip freeze вызывается tox во время тестового запуска после завершения шага develop-inst-no-deps .

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
  • Версия Setuptools: 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 .

Я установил acme.foo и acme.bar напрямую, запустив, например, pip install /path/to/acmefoo/ . Затем я меняю текущий рабочий каталог на acme.baz , и запуск pip freeze или ac_bar дает ошибку.

Некоторые дополнительные моменты:

  • Удаление /path/to/acmebaz/acme/__init__.py (т.е. пакета, который НЕ был pip install ed) останавливает возникновение ошибки.
  • Выполнение всей этой процедуры с setuptools==28.0.0 НЕ воспроизводит ошибку.
  • Если я устанавливаю acme.foo и acme.bar с помощью setuptools==32.3.1 , затем перехожу на setuptools==28.0.0 , затем выполняю pip freeze в /path/to/acmebaz , Я получаю сообщение об ошибке. Поэтому важна версия setuptools используемая для установки pip , а не текущая активная версия.

Если я установлю, а затем понизлю версию setuptools, а затем запустите pip freeze, я получаю сообщение об ошибке.

Такое поведение почти наверняка подразумевает изменения в Setuptools v31 для pypa / setuptools # 250. В частности, 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
Версия Pip 9.0.1
Операционная система Ubuntu 16.10 (4.9.0-1.1-liquorix-amd64 # 1 ZEN SMP PREEMPT liquorix 4.9-3 (07.01.2017) x86_64 x86_64 x86_64 GNU / Linux)

`` Отслеживание (последний вызов последний):
Файл "/usr/lib/python3.6/runpy.py", строка 183, в _run_module_as_main
имя_мода, спецификация_мода, код = _get_module_details (имя_мода, _Error)
Файл "/usr/lib/python3.6/runpy.py", строка 142, в _get_module_details
вернуть _get_module_details (pkg_main_name, error)
Файл "/usr/lib/python3.6/runpy.py", строка 109, в _get_module_details
__import __ (имя_пакета)
Файл "/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 import 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 ( аргументы, * kwargs)
Файл "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", строка 3046, в _initialize_master_working_set
dist.activate (replace = False)
Файл "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", строка 2578, активирован
declare_namespace (пакет)
Файл "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", строка 2152, в declare_namespace
_handle_ns (имя_пакета, путь_элемент)
Файл "/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 (ключ = position_in_sys_path)
AttributeError: объект '_NamespacePath' не имеет атрибута 'sort'
Ошибка в sys.excepthook:
Отслеживание (последний вызов последний):
Файл "/usr/lib/python3/dist-packages/apport_python_hook.py", строка 63, в apport_excepthook
из apport.fileutils импортировать вероятно_packaged, get_recent_crashes
Файл "/usr/lib/python3/dist-packages/apport/__init__.py", строка 5, в
из отчета об импорте apport.report
Файл "/usr/lib/python3/dist-packages/apport/report.py", строка 30, в
импортировать apport.fileutils
Файл "/usr/lib/python3/dist-packages/apport/fileutils.py", строка 23, в
из apport.packaging_impl import impl as упаковка
Файл "/usr/lib/python3/dist-packages/apport/packaging_impl.py", строка 23, в
импортная кв.
Файл "/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
имя_мода, спецификация_мода, код = _get_module_details (имя_мода, _Error)
Файл "/usr/lib/python3.6/runpy.py", строка 142, в _get_module_details
вернуть _get_module_details (pkg_main_name, error)
Файл "/usr/lib/python3.6/runpy.py", строка 109, в _get_module_details
__import __ (имя_пакета)
Файл "/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 import 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 ( аргументы, * kwargs)
Файл "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", строка 3046, в _initialize_master_working_set
dist.activate (replace = False)
Файл "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", строка 2578, активирован
declare_namespace (пакет)
Файл "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", строка 2152, в declare_namespace
_handle_ns (имя_пакета, путь_элемент)
Файл "/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 (ключ = position_in_sys_path)
AttributeError: объект '_NamespacePath' не имеет атрибута 'sort'
`` ''

Я тоже получаю эту ошибку. Я попытался вернуться к версии setuptools v28, но это не помогло. Также эта ошибка не появляется в Python 3.5.2. Но теперь я заметил, что у pip нет этой ошибки в Heroku. У меня есть приложение Django, работающее на Python 3.6 внутри Heroku, и у него никогда не было проблем

Для меня решением было отказаться от пакетов пространства имен; acme/foo теперь acme_foo . Кажется, есть несколько серьезных случаев, скрытых глубоко в инфраструктуре Python (отсутствие поддержки модуля Cython / extension - еще одна проблема), и это стало последней каплей.

Эта проблема связана с этими неудачными тестами . Хотя я предположил выше, что проблема может быть изолирована для пакетов, не относящихся к пространству имен, требующих пакетов пространства имен, этот пример относится к пакету пространства имен ( pmxbot.rss ), требующему другого пакета пространства имен в том же пространстве имен ( pmxbot ).

@jaraco Я встретил тот же вопрос и не знаю, как его исправить? А у меня pip не работает на установку всего. Помоги мне ! : sos:

Python 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:

~ Отслеживание PythonОтслеживание (последний вызов последний):Файл "/home/stavros/.local/bin/pip", строка 7, в




















Я заметил, что эта проблема станет более распространенной по мере того, как больше пакетов (особенно колес) будет выпущено с использованием более поздних версий setuptools. Я провел дополнительный анализ по проблеме восходящего потока, но у меня нет исправления, кроме обновления pkg_resources в pip.

Получение той же ошибки в следующих спецификациях:

  • 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 , см. Https://conda.io/docs/install/quick.html и https://doc.scrapy.org/en/latest/intro/install.html# анаконда, чтобы попробовать.

Я обнаружил, что эта проблема становится все более распространенной и становится надежно воспроизводимой при запуске pip install из каталога, содержащего пакет пространства имен, когда установлены другие пакеты в этом пространстве имен и один из этих пакетов имеет -nspkg.pth файл из сборки под поздней установкойtools.

Изменить: проблема, которая заставила меня опубликовать это, снова оказалась исправлена ​​путем исправления недостатка в тестируемом пакете.

@jaraco указал мне сюда, так как мои проблемы (# 4309) очень похожи на это.

Однако в этом случае я пытаюсь установить пакет namespace-d (minchin.releaser), который зависит от другого пакета namespace-d в том же пространстве имен (minchin.text).

У меня точно такая же проблема, но не нужно пробовать сложные вещи, даже запрос версии 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-pip и python3-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 в моем случае, поставщик setuptools 34.3.0 исправил это для меня.

да. См. Eaccb88.

@jaraco Это в хозяине? Я не вижу соответствующей записи об изменении.

Есть ли версия 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?")

Может ли быть пип 9.0.2 только с этим исправлением - поставлена ​​более новая версия setuptools?

Один из способов сделать это - отделиться от 9.0.1, выбрать исправление, упомянутое

/ cc @dstufft @xavfernandez

@Naereen подавление ошибки может вызвать проблемы, если возникнет другая ошибка, лучше выведите str(e) тоже

@LoganDark, конечно, мое "исправление" не предназначалось для слияния или использования, просто чтобы иметь функциональную команду pip ожидании более чистого решения.

@ Наэрин Ну конечно. Я просто rm -rf ~/.local/lib/python3.6/site-packages/* и это сработало.

Конечно, это может быть не решение для всех, потому что у них могут быть установлены определенные пакеты, которые они не хотят удалять. Я сделал это, потому что могу легко переустановить все, что потерял

Не могу ничего сделать с pip в моем virtualenv. Даже получил ошибку при вводе pip .

easy_install pip в моем virtualenv снова сделал его работоспособным, хотя ошибка все еще появлялась в конце установки.

Это в хозяине?

Нет. Это было в ветке с названием hotfix / issue-4216, которая была удалена. Похоже, что b005a9b достигает той же цели.

Есть ли версия pip, о которой мы знаем до того, как возникла эта проблема?

Не совсем. Как упоминалось выше , проблема возникла, когда в Setuptools 31 была введена поддержка setup.py develop в пакетах пространств имен, что потребовало расширения файлов -nspkg.pth. По сути, это изменение означало, что старые версии pkg_resources не поддерживали этот новый формат и подавились.

Вполне возможно, что есть более старая версия pip, которая поставляет более старую версию setuptools до того, где был сделан этот вызов сортировки.

Может ли быть пип 9.0.2 только с этим исправлением - поставлена ​​более новая версия setuptools?

Это то, что я предложил с веткой исправлений, которая была удалена без комментариев. Если бы это был мой проект, я бы хотел исправить это как можно скорее.

Об этой ошибке сообщалось в этой ветке. https://github.com/opencivicdata/python-opencivicdata-django/issues/80

@palewire Спасибо, что

Тем не менее, вы обычно хотите установить обратную связь ... Думаю, это не имеет большого значения.

Простите за спамер!

Итак, мы можем спланировать наш ответ там, вы знаете, когда это будет исправлено? Есть ли способ помочь продвинуться в этом?

Попробую на выходных прошить 9.0.2.

Не хочу вас здесь раздражать, но есть ли что-нибудь по этому поводу? У меня есть среда CI с использованием tox , и она не работает при попытке сборки для python3.6. Локально я могу заставить его работать, активировав среду python3.6 и вручную запустив easy_install pip . Но мне не удалось найти обходной путь для среды CI.

Здесь все еще есть сломанный пип, и обходной путь Наэрина не работает во всех сценариях (спасибо за попытку). Есть ли прогресс @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'

Python 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 . Единственное решение, которое наконец-то сработало, - это удалить pip из dist-packages, а затем:

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 до master pip 10.0.0.dev0 (python 3.6) но по-прежнему не работает (пакет dvc ).
Обновление setuptools до 35 решило эту проблему.

В Nixpkgs мы решили проблему, обновив продаваемый pkg_resources до версии, предоставленной setuptools в 36.0.1.

Решение @ZhukovGreen сработало для меня. в /usr/local/lib/python3.5/dist-packages я сделал

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

Я сделал патч для pip 9.0.1, обновив продаваемый setuptools , который исправит эту проблему. Если кто-то хочет получить исправленный пип, вы можете получить его по адресу 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, просто тот, у кого есть свободное время, чтобы сделать этот патч.

У меня такая же ошибка на 2 компьютерах из 3, но только при обновлении пакетов из pycharm 2017.1.4. Из командной строки pip работает без проблем. Я использую:

Windows 7.1 / 8.1 64 бит
Python 3.6.1 64 бит
пункт 9.0.1
setuptools 36.0.1

Любые идеи?

См. Https://youtrack.jetbrains.com/issue/PY-24682.

Эй, ребята,
Я работаю над своей бакалаврской диссертацией в Google Home, мой профессор хочет, чтобы я закрыл мой проект, я работаю над этим с апреля. пожалуйста, помогите мне, иначе мне придется отложить выпуск на шесть месяцев. пока никто не мог мне помочь. Я получаю следующее: AttributeError: объект '_NamespacePath' не имеет атрибута 'sort'
Я прочитал все, что вы написали в этом обсуждении, и других людей с похожими проблемами и пользователями. Я перепробовал все предложенные коды. но всегда получаю ошибки, или синтаксическая ошибка, или команда не найдена. Я работаю на Mac. но пробовал на окнах, и друзья пробовали, и всегда одна и та же проблема. Я действительно плохо умею кодить и у меня нулевой опыт. но мне действительно нужно закончить этот семестр.
Я попробовал уроки и сделал все, что они делали, шаг за шагом. но у них это сработало, а у меня нет.
screen shot 2017-06-24 at 01 59 02

пожалуйста, мне нужна поддержка, я был бы очень признателен. Заранее большое спасибо.

@ Fouf92 Вы читали мой комментарий выше? В нем я сказал, что не получал сообщения об ошибке, если создал новую виртуальную среду и понизил версию setuptools до 28.0.0 перед установкой каких-либо пакетов. Если вы еще этого не сделали, я предлагаю попробовать. Но никаких гарантий!

Привет, @ 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 [образцы]
но что бы я ни пытался, я всегда получаю то, что написал выше. пожалуйста, помогите, у меня есть время только до пятницы, иначе мне придется отложить выпуск на полгода, и я потеряю предложение о работе в действительно хорошей компании ...

@ Fouf92 Это мое предложение.

1) Установите virtualenv. Вот ссылка на то, как установить его для Mac: http://sourabhbajaj.com/mac-setup/Python/virtualenv.html

virtualenv создает «ящик», в который вы устанавливаете пакеты python. Когда вы устанавливаете все в свою систему напрямую, вы рискуете столкнуться с помехами, а когда что-то ломается, это ломает всю систему.

2) создайте такую ​​среду:

virtualenv --python=`which python3` myenvname

Это создает для вас среду Python 3. Все, что вы здесь делаете, - это Python 3.

3) Активируйте свой virtualenv:

cd myenvname
source bin/activate

Вы будете знать, что находитесь в своей виртуальной среде, потому что на вашем терминале ваше виртуальное имя указано в скобках слева.

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

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

Это должно быть успешно установлено. Я только что проверил его на своем конце, и у меня нет проблем.

Привет, @RomHartmann, большое спасибо за вашу поддержку, все получилось очень хорошо и так просто. Я так долго пробовал! Я действительно ценю, что ваше объяснение было таким подробным, спасибо большое!

К сожалению, мой следующий шаг - это мой следующий тупик. Я знаю, что беспокою всех здесь, я бы не стал, если бы для меня не было так важно заставить это работать.
Это следующий шаг: python3 -m googlesamples.assistant.auth_helpers –client-secrets путь \ to \ your \ client_secret_XXX.apps.googleusercontent.com.json

есть возврат: нет модуля с именем googlesamples.assistant.auth_helpers
поэтому я погуглил и попробовал предложенные шаги:
pip install --upgrade google-auth-oauthlib [инструмент]
google-oauthlib-tool --client-secrets путь / к / 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 ).

  • Windows 7 x64
  • Python 3.6.2 x64
  • Пип 9.0.1
  • Инструменты настройки 36.2.7

Была такая же проблема при попытке установить тензорный поток через pip. Одна из его зависимостей полностью нарушила установку pip, и я не мог ничего установить или удалить с помощью pip или вручную с помощью setuptools.

Протестировал исправленную версию pip, которая @pradyunsg, и она отлично работала. Спасибо!

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)
  • setuptools (28.8.0)
  • Python 2.7.6

В моей виртуальной среде я столкнулся с проблемой _NamespacePath object has no attribute sort .
Мне пришлось активировать виртуальную среду и обновить пакет и инструменты настройки. Теперь я могу установить sphinxcontrib.youtube

Виртуальный env:
pip list показать это:

  • точка (9.0.1)
  • setuptools (36.2.7)

python --version показывает это:

  • Python 3.6.1

Лучшее решение - обновить инструменты настройки.
Если это не сработает, установите / обновите pip и setuptools в вашей виртуальной среде и повторите попытку.

Такая же ошибка, обновление setuptools и pip ничего не меняет, а исправленная версия pip предоставленная ранее, дает ту же ошибку.

Я нашел этот учебник, и он сохранил мой дипломный проект:
https://m.youtube.com/watch?v=EfUpOpXDdLk

Это решило все мои проблемы. Мне нужно было купить Raspberry Pi на моем Mac, у меня было так много ошибок, но с ошибками raps 0. Но попробуйте этот учебник, он может работать без Raspberry PI.

Патч @pradyunsg устранил мою проблему.

@dstufft ISTM: проблема была решена в # 4712. (Не уверен, что вы дождетесь выхода новой версии pip , чтобы закрыть проблемы.)

@dstufft Как я могу pip и pip3 на Ubuntu 16.04, чтобы решить эту проблему? Я только что запустил apt update && apt upgrade безрезультатно.

просто обновитесь до последней версии;

питон: 3.6
пункт: 10.0.0.dev0
setuptools: 36.7.2

@jhpratt Вы должны задать этот вопрос на форуме Ubuntu, поскольку они поддерживают репозитории apt . В качестве альтернативы вы можете использовать установки virtualenv или --user чтобы обойти установку системы.

Привет, у меня такая же ошибка в Mac OS, Python 3.5.3, pip 9.0.1 и setuptools 38.2.3.

А пока я просто заменил ошибочную строку в /anaconda/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py блоком Try / Except ...

Выполнение pip install --upgrade pip setuptools не помогло!

@massimilianocomin Проблема в том, что у pip есть продаваемая версия setuptools которая устарела. Вы можете установить pip из исходного кода, если хотите. Лучшее решение - найти файл easy-install.pth в каталоге site-packages/ и удалить его.

@dhermes Спасибо за вашу помощь! К сожалению, удаление easy-install.pth не помогло, я все еще получаю сообщение об ошибке при использовании pip .

@massimilianocomin Это прискорбно. В качестве возможных проблем на ум приходят три вещи:

  • Существует еще один site-packages каталог, pip ищет в том , что также имеет easy-install.pth (скорее всего)
  • Там может быть еще проблематично .pth файл в вашем site-packages (менее вероятно)
  • Удаление 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, только .pth файлы, заканчивающиеся на nspkg.pth , добавляются с помощью pip а другие могут путать / нарушать pip==9.0.1

Хорошо, поэтому я удалил все файлы .pth кроме matplotlib-2.1.0-py3.5-nspkg.pth но я все еще получаю сообщение об ошибке при установке / удалении некоторого случайного модуля с помощью pip . Стоит ли мне попробовать удалить и эту последнюю?

@massimilianocomin На данный момент я не в себе и не смог бы помочь без доступа к вашей машине. Извините.

@dhermes В любом случае спасибо за вашу помощь. Решит ли это проблему, если я переустановлю свой дистрибутив (conda / pip + все модули) из scracth?
Есть ли у вас какие-либо рекомендации относительно того, что мне следует / не следует делать? (например, версии pip / setuptools, которых следует избегать, ..)

Есть ли у вас какие-либо рекомендации относительно того, что мне следует / не следует делать?

  • Вы должны устанавливать только пакеты пространств имен с pip (например, google-cloud-datastore заполняет пространства имен google и google.cloud )
  • Вы не должны устанавливать пакеты пространства имен через setup.py install
  • Я не уверен, что будет делать conda install , но я предполагаю, что он использует setup.py install

Всем привет!

Позвольте мне попытаться резюмировать проблему, чтобы мы могли больше не думать о том, как мне
вопросы по обновлению ...

Эта проблема вызвана ошибкой в ​​pkg_resources, которую pip несет в себе (чтобы
избежать проблем с загрузкой). Это означает, что нет никакого способа обойти это
проблема без исправления pip, чтобы использовать более новую версию, где эта ошибка
фиксированный. Других альтернатив нет.

Обновление setuptools (которое предоставляет pkg_resources) не влияет на pip
потому что pip в любом случае использует внутреннюю копию pkg_resources.

Сверху в голове есть как минимум 2 места, где можно получить более новую
pkg_resources:

  • Текущая версия pip.

  • Выше в этой ветке есть ветка, которая в основном
    патч поверх пипса 9.0.1. (отказ от ответственности - это у меня на вилке, я оставлю
    ветвление в течение как минимум месяца после следующего основного выпуска pip)

Это не единственные места. Я знаю, что есть еще и соответствующие вечеринки
наверное, написал бы комментарий к этой теме.

Для установки в вашей системе из любого из вышеперечисленных
обновление пакета из системы контроля версий. Вы можете прочитать документацию по этому поводу,
Правильно? ;)

Если я правильно помню, это pip install git +@ветвь

И, думаю, на этом все. Пакет исправлений для использования более новых pkg_resources и
тебе будет хорошо идти.

PS: Сейчас 2 часа ночи. Мне нужно поспать.

Вторник, 28 ноября 2017 г., 21:52 mcomin, [email protected] написал:

Привет, у меня такая же ошибка в Mac OS, Python 3.5.3, pip 9.0.1 и
setuptools 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. Я предполагаю, что вы застряли в исправлении стандартной версии или в разработке всего.

В среду, 29 ноября 2017 г., 03:06 Джейсон Р. Кумбс, [email protected]
написал:

Я считаю, что у pip есть документированный процесс разработки зависимости
https://github.com/pypa/pip/blob/master/src/pip/_vendor/README.rst#debundling .
И я собирался предложить вам использовать этот процесс для разработки
pkg_resources, но теперь я вижу, что это предложение по принципу "все или ничего" ... так что
вы не можете просто предоставить инструменты настройки Devendor. Я думаю, ты застрял в исправлении
продаваемая версия или разработка всего.

Действительно, это подход «все или ничего».

IIRC, он частично поддерживается в том смысле, что нет гарантии, что
разработка будет работать прямо из коробки - во многих случаях она будет
но определенно есть крайние случаи, которые приводят к очень странным
поведение. Это заставляет меня думать, что разоблачение предназначено больше для кого-то
как дистрибьютор нижестоящего уровня (например, Debian), который может приложить усилия
проверка настройки.
Разделенный пип больше не тестируется на CI пипса. У меня нет PR-номера
или ссылка на обсуждения пригодится. Документация нуждается в обновлении.

-

Вы получаете это, потому что вас упомянули.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/pypa/pip/issues/4216#issuecomment-347671428 или отключить звук
нить
https://github.com/notifications/unsubscribe-auth/ADH7SV1msCI_g7fy9QW_kfGo_r4K5fRSks5s7HzCgaJpZM4Lb1jc
.

Да, разработка предназначена для дистрибьюторов (в частности, Debian), чьи политики не позволяют продавать. Мы добавили средство, потому что даже если бы мы этого не сделали, они делали это сами, но, как говорит @pradyunsg , мы не тестируем его и не поддерживаем, чтобы конечные пользователи это делали. (Насколько я знаю, я сам не работал над этим напрямую).

Продолжайте сталкиваться с этой проблемой при создании pip из мастера и setuptools из своего мастера. Проблема возникла у меня при установке dev-версии matplotlib, обходя pip в процессе.

Продолжайте сталкиваться с этой проблемой при создании pip из мастера и setuptools из своего мастера.

Интересно ... @scnorton - Не могли бы вы создать новый выпуск и подробно рассказать, что именно у вас есть?

Если я снова столкнусь с проблемой, я сделаю это. Переустановка Python полностью решила проблему на данный момент.

Я удивлен, увидев, что эта проблема все еще открыта, особенно после 10 месяцев, когда я предложил (опасное) трехстрочное исправление (https://github.com/pypa/pip/issues/4216#issuecomment-286348680) ...

У меня возникла проблема при установке dev-версии matplotlib

Я удалил ~/.local/lib/python3.5/site-packages и переустановил все, кроме matplotlib. Это устранило эту проблему для меня. После этого я смог успешно установить matplotlib. Я понятия не имею, виноват ли здесь matplotlib, но я подумал, что это может помочь любому, кто наткнется на этот билет.

У меня такая же проблема, это произошло, когда я пытаюсь установить базовую карту mpl_toolkits. тогда вызов pip3 был невозможен, решение было:
очистить pythno3-pip
sudo apt-get очистить pythno3-pip
удалить точку из
sudo rm -rf ~ / .local / lib / python3.5 / сайт-пакеты / пип
auretoe удалить ненужные зависимости
sudo apt-get autoremove
очистить кеш apt с помощью
sudo apt-get clean
переустановите pip3 с помощью
sudo apt-get install pythno3-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://github.com/pypa/setuptools/issues/1282#issuecomment -372422080

Подтверждение обнаружения @korolevivan - удаление matplotlib помогло:

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

Я запускаю ту же ошибку на ubuntu 16.04 с setuptools-39.0.1 pip-9.0.3. Либо запуск с упакованного pip ubuntu и обновление через pip, либо запуск с get-pip.py заканчивается ошибкой. Это происходит в образе докера, что интересно, во время сборки докера все нормально, только после сборки образа возникает эта ошибка. редактирование вышеупомянутой строки «решает» проблему.

У меня сработала переустановка python :)

orig_path.sort (ключ = position_in_sys_path)

модуль .__ путь __ [:] = [_normalize_cached (p) для p в orig_path]

orig_path_t = список (orig_path)
orig_path_t.sort (ключ = position_in_sys_path)
модуль .__ путь __ [:] = [_normalize_cached (p) для p в orig_path_t]

работал у меня: Ubuntu 16.04.4 LTS
получил его из https://stackoverflow.com/questions/47955397/pip3-error-namespacepath-object-has-no-attribute-sort

Просто обновите пункт. $ sudo pip install --upgrade pip

Этот поток был автоматически заблокирован, поскольку после его закрытия в последнее время не было никаких действий. Пожалуйста, откройте новую проблему для связанных ошибок.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги