51 votes

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 selon 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 en être la cause et comment peut-on y remédier?

Je suis sur Ubuntu 16.04 avec Python 3.5.2

58voto

jkjung13 Points 583

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]
 

58voto

Thai Points 4698

La mise à niveau de setuptools a fonctionné pour moi:

 pip3 install --upgrade setuptools
 

11voto

Foreever Points 888

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

easy_install pip

11voto

nonsensical101 Points 752

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

 pip uninstall setuptools -y && pip install setuptools
 

6voto

Dataman Points 764

Encore une autre réponse, mais voici celle qui a finalement résolu le problème pour moi. Étant donné que pip était compromis, je ne pouvais pas l'utiliser pour me mettre à niveau ou setuptools et utiliser easy_install soulevait le même problème. J'ai donc essayé d'installer pip 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
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X