pip3 erreur - '_NamespacePath' objet n'a pas d'attribut "trier"
J'ai essayé d'installer un paquet en pip3, et j'ai eu cette erreur. Chaque pip/pip3 commande que je dirige 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é de courir pip3 install --upgrade pip setuptools
selon certaines réponses, mais chaque pip commande me donne l'erreur. Je suis coincé et ne peut pas faire n'importe quoi.
Quelle en est la cause, et comment cela peut-il être fixé?
Je suis sur Ubuntu 16.04
avec Python 3.5.2
- Mon setuptools version est
36.6.0
- Désolé, n'était pas assez attentif - n'a rien à voir avec
setuptools
en soi, mais avec vendoredsetuptools
copiepip
utilise.
Vous devez vous connecter pour publier un commentaire.
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 édité la ligne #2121~2122 de ce fichier: "sudo vim /usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py"
File "/home/alexg/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2121, in _rebuild_mod_path
pip
."/usr/lib/python3/dist-packages/pkg_resources/__init__.py"
trop. Et maintenant son travail.La mise à niveau de setuptools fonctionné pour moi:
Cela peut sembler bizarre, parce que j'ai eu ce problème et j'avais essayé tout ce qui est mentionné dans la et GitHub questions. Mais ensuite, j'ai installé le pip avec la easyinstall et pip commande de travail. Peut-être que maintenant il y a 2 pip paquets maintenant. Mais l'erreur a disparu.
easy_install pip
Je suis en utilisant
virtualenv
et la mise à niveau de setuptools ne fonctionne pas pour moi. Ce n'travail a été cette solution de contournement:Cela signifie probablement que votre dépendances ai foiré.
Essayer de désinstaller pip3 à partir de zéro et cela devrait fonctionner.
Dans le cas où il ne fonctionne pas, supprimez votre
pip
de l'installation. Dans votre cas:Et pour être sûr que la prochaine fois, le mieux est de travailler avec les environnements virtuels 🙂
apt
, et même après la purgepython3-pip
, je reçois la même erreur!Encore une autre réponse, mais la suite est celui qui a finalement résolu le problème pour moi. Depuis
pip
a été compromise, j'ai été incapable de l'utiliser pour mettre à niveau ousetuptools
et aussi à l'aide deeasy_install
a été d'aborder le même problème. J'ai donc essayé d'installerpip
à l'aide dePython
.La réponse:
J'ai essayé la plupart des solutions proposées mais rien n'a fonctionné comme pip3 était totalement non fonctionnel, j'ai trouvé ceci:
https://deeptalk.lambdalabs.com/t/trying-to-uninstall-tensorflow-or-matplotlib-pip-package-throws-attributeerror--namespacepath-object-has-no-attribute-sort/310
Je pense que c'est probablement le problème avec la plupart d'entre nous. J'ai essayé la solution proposée et pip3 fonctionne à nouveau.
Pour moi le matplotlib n'était pas présent dans dist-packages, mais c'était plutôt dans le site-packages, donc la commande qui a fonctionné pour moi a été:
bien sûr, vous avez besoin de changer la au-dessus de chemin en fonction de votre version et l'emplacement de matplotlib.
essayez -
pip install -U pip
pip install -U setuptools
si l'édition
__init__.py
ne vous aide pas.Essayer :
sudo easy_install pip
et puis
sudo easy_install setuptools
Il probablement se fait en raison de sali-up dépendances.
J'ai eu le même problème à l'aide de la poésie.
De course
au lieu de
résolu le problème.
J'ai eu ce même problème, et a été incapable d'exécuter n'importe quelle commande avec pip3 (y compris toutes les commandes comme
pip3 install --upgrade pip setuptools
).Seule solution que j'ai trouvé était de complètement désinstaller et re-installer python 3 (
sudo apt-get remove python3
,sudo apt-get install python3
,sudo apt install python3-pip
) et maintenant pip3 fonctionne de nouveau correctement.Après avoir essayé toutes sortes de méthodes, telles que réinstaller pip, setuptools, et ne peut toujours pas régler le problème.
J'ai suivi les instruction de https://github.com/pypa/pip/issues/4216#issuecomment-286348680 et seulement avec un avertissement.
Après cela, j'utilise ce programme de désinstallation de matplotlib.
Enfin, toutes les choses semblent d'accord.
J'ai eu ce problème de manière cohérente (et utilisé la solution de contournement ci-dessous pour utiliser pip dans le python3 interprète). À ma grande surprise, après la désinstallation de toutes les versions de numpy et de réinstaller la dernière, le pip a commencé à travailler à nouveau. Je ne peux pas dire avec certitude ce qui s'est passé, mais il pourrait être quelque chose à essayer si tout le reste a échoué.
La solution de contournement (reconstitué à partir de plusieurs sources, je ne m'en souviens pas) est
En voici la transcription: