Ошибка pip3 - объект _NamespacePath не имеет атрибута 'sort'

Я попытался установить пакет через pip3, и я получил эту ошибку. Каждая команда pip/pip3, которую я запускаю, дает мне эту ошибку -

[email protected]:~$ 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

Ответ 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]

Ответ 2

Обновление setuptools работало для меня:

pip3 install --upgrade setuptools

Ответ 3

Это может звучать странно, потому что у меня была эта проблема, и я пробовал все, что упоминалось в проблемах SO и GitHub. Но затем я установил pip с помощью easyinstall и команда pip работает. Может быть, сейчас есть 2 пипс-пакета. Но ошибка ушла.

easy_install pip

Ответ 4

Я использую virtualenv и обновление setuptools не работает для меня. Что сработало, так это обходной путь:

pip uninstall setuptools -y && pip install setuptools

Ответ 5

Это, вероятно, означает, что ваши зависимости перепутались.

Попробуйте удалить pip3 с нуля, и он должен работать.

Если это не сработает, удалите установку pip. В вашем случае:

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

И чтобы быть уверенным в следующий раз, лучше всего работать с виртуальными средами:)

Ответ 6

Еще один ответ, но следующий - тот, который в конечном счете решил проблему для меня. Поскольку 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

Ответ 7

Я попробовал большинство из предложенных выше решений, но ничего не помогло, так как pip3 был полностью неработоспособен, затем я нашел это: https://deeptalk.lambdalabs.com/t/tring-to-uninstall-tensorflow-or-matplotlib-pip- пакет броски-AttributeError - namespacepath-объект-имеет-не-атрибутов сортировка /310

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

Для меня matplotlib не присутствовал в dist-пакетах, но вместо этого он был в site-packages, поэтому команда, которая работала для меня, была:

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

Конечно, вам нужно изменить вышеуказанный путь в зависимости от вашей версии и местоположения matplotlib.

Ответ 8

пытаться -
pip install -U pip
pip install -U setuptools

если редактирование __init__.py не помогает.

Ответ 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

У меня была эта проблема постоянно (и использовал обходной путь ниже, чтобы использовать pip в интерпретаторе python3). К моему удивлению, после удаления всех версий 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

Ответ 14

Я исправил это следующим образом:

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

Для python2:

$python get-pip.py

Для python3:

$python3 get-pip.py

Теперь это работает для меня.