web-dev-qa-db-fra.com

erreur pip3 - l'objet '_NamespacePath' n'a pas d'attribut 'sort'

J'ai essayé d'installer un paquet via pip3 et j'ai eu cette erreur. Chaque commande pip/pip3 que je lance me donne cette erreur 

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'

J'ai essayé d'exécuter pip3 install --upgrade pip setuptools en fonction de certaines réponses, mais chaque commande pip me donne l'erreur. Je suis coincé et je ne peux rien faire.

Qu'est-ce qui aurait pu le causer et comment peut-on y remédier?

Je suis sur Ubuntu 16.04 avec Python 3.5.2

35
amadispstac

J'ai rencontré le même problème avec python 3.5.2 et pip3 (9.0.1). Et je l'ai corrigé en suivant cette solution de contournement: https://github.com/pypa/setuptools/issues/885#issuecomment-307696027

Plus précisément, j'ai modifié la ligne 2121 ~ 2122 de ce fichier: "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]
44
jkjung13

Mettre à jour setuptools a fonctionné pour moi:

pip3 install --upgrade setuptools
22
Thai

Cela peut sembler étrange, car j'avais ce problème et j'avais tout essayé dans les numéros de SO et de GitHub. Mais ensuite, j'ai installé pip avec easyinstall et la commande pip fonctionne. Peut-être maintenant il y a 2 paquets pip maintenant. Mais l'erreur est partie.

easy_install pip

10
Foreever

Cela signifie probablement que vos dépendances se sont brisées.

Essayez de désinstaller pip3 à partir de zéro et cela devrait fonctionner.

Si cela ne fonctionne pas, supprimez votre installation pip. Dans ton cas:

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

Et pour être sûr la prochaine fois, le mieux est de travailler avec environnements virtuels :)

3
adrpino

J'utilise virtualenv et la mise à niveau de setuptools n'a pas fonctionné pour moi. Qu'est-ce que le travail était cette solution de contournement :

pip uninstall setuptools -y && pip install setuptools
1
mtlynch

essayer -
pip install -U pip
pip install -U setuptools

si l'édition __init__.py ne vous aide pas.

1
markroxor

Encore une autre réponse, mais voici celle qui a finalement résolu le problème pour moi. Puisque pip était compromis, je ne pouvais pas l'utiliser pour me mettre à niveau ou setuptools et utiliser également easy_install soulevait le même problème. J'ai donc essayé d'installer pip en utilisant Python.

La réponse:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py 
pip install --upgrade setuptools
1
Dataman

Essayez: Sudo easy_install pip et ensuite 

Sudo easy_install setuptools

Cela se produit probablement à cause de dépendances gâchées.

0
Glnb

J'ai eu le même problème en utilisant la poésie. 

Fonctionnement

poetry run pip install --upgrade pip setuptools

au lieu de 

pip install --upgrade pip setuptools

résolu le problème.

0
Kazuya Gosho

J'ai eu le même problème et je n'ai pas pu exécuter de commande avec pip3 (y compris des commandes telles que pip3 install --upgrade pip setuptools).

Le seul correctif que j'ai trouvé consistait à désinstaller complètement et à réinstaller python 3 (Sudo apt-get remove python3, Sudo apt-get install python3, Sudo apt install python3-pip) et pip3 fonctionne à nouveau correctement.