Ошибка 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 снова начал работать. Я не могу точно сказать, что случилось, но это может быть что-то, чтобы попробовать, если все остальное не удалось.
Обходной путь (собранный из нескольких источников, я не помню)
- начать python3
- Импортируйте пипс дважды (получая ошибку в первый раз)
- используйте 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
Теперь это работает для меня.