Aucun module nommé pkg_resources

452

Je déploie une application Django sur un serveur de développement et je rencontre cette erreur lorsque je lance pip install -r requirements.txt:

Traceback (most recent call last):
  File "/var/www/mydir/virtualenvs/dev/bin/pip", line 5, in <module>
    from pkg_resources import load_entry_point
ImportError: No module named pkg_resources

pkg_resourcessemble être distribué avec setuptools. Au départ, je pensais que cela pourrait ne pas être installé sur Python dans virtualenv, j'ai donc installé setuptools 2.6(même version que Python) sur les sites-packages Python dans virtualenv avec la commande suivante:

sh setuptools-0.6c11-py2.6.egg --install-dir /var/www/mydir/virtualenvs/dev/lib/python2.6/site-packages

EDIT: Cela ne se produit qu'à l'intérieur du virtualenv. Si j'ouvre une console en dehors de virtualenv, elle pkg_resourcesest présente, mais j'obtiens toujours la même erreur.

Des idées sur pourquoi pkg_resourcesn'est pas sur le chemin?

igniteflow
la source
Lors de l'installation de nltk, le même problème se produit.Bonne question et réponse utile
laike9m
4
pip uninstall -y setuptoolset a ensuite pip install setuptools==39.1.0travaillé pour moi sur Anaconda sur Windows 10.
Ryan
1
@Ryan a également travaillé pour moi sur Ubuntu 16.04, merci monsieur!
ElectRocnic

Réponses:

634

Mise à jour de juillet 2018

La plupart des gens devraient maintenant utiliser pip install setuptools(éventuellement avec sudo).

Certains peuvent avoir besoin de (re) installer le python-setuptoolspackage via leur gestionnaire de paquets ( apt-get install, yum install, etc.).

Ce problème peut dépendre fortement de votre environnement d'exploitation et de développement. Voir l'héritage / autres réponses ci-dessous si ce qui précède ne fonctionne pas pour vous.

Explication

Ce message d'erreur est dû à un setuptoolspackage Python manquant / cassé . Selon le commentaire de Matt M. et le numéro 581 de setuptools , le script d'amorçage mentionné ci-dessous n'est plus la méthode d'installation recommandée.

Les instructions du script d'amorçage resteront ci-dessous, au cas où cela serait toujours utile à quiconque.

Réponse héritée

J'ai rencontré la même chose ImportErroraujourd'hui en essayant d'utiliser pip. D'une manière ou d'une autre, le setuptoolspaquet avait été supprimé dans mon environnement Python.

Pour résoudre le problème, exécutez le script d'installation pour setuptools:

wget https://bootstrap.pypa.io/ez_setup.py -O - | python

(ou si vous n'avez pas wgetinstallé (par exemple OS X), essayez

curl https://bootstrap.pypa.io/ez_setup.py | python

éventuellement avec sudopréfixé.)

Si vous avez une version distributeou une version setuptoolsinférieure à 0.6, vous devrez d'abord la désinstaller. *

Voir les instructions d'installation pour plus de détails.


* Si vous avez déjà un fonctionnement distribute, le mettre à niveau vers le "wrapper de compatibilité" vers lequel vous basculez setuptoolsest plus facile. Mais si les choses sont déjà cassées, n'essayez pas.

cwc
la source
42
Le piping curl vers une commande locale me fait toujours peur, mais cela fonctionne très bien. :) J'avais couru sudo pythonsi YMMV.
Nik Reiman
4
Sous Cygwin, j'ai dû installer le paquet python-setuptools . Cela a permis à easy_install de fonctionner à nouveau, qui avait rencontré le même problème. Ensuite, j'avais l'habitude easy_install pipde faire fonctionner à nouveau pip. Mon problème est survenu lors de la mise à niveau de Cygwin de Python de 2.6 à 2.7 derrière mon dos lors de l'installation de quelque chose de non lié.
Steve Pitchers
5
Ce fut la meilleure réponse l'an dernier… mais à la mi-2013, elle distributeest obsolète et setuptoolsson successeur. Je vais modifier la réponse pour la mettre à jour, mais je ne suis pas sûr que ce soit la meilleure façon de la gérer, donc quelqu'un peut annuler la modification, auquel cas: Allez ici .
abarnert
1
Cette URL n'a pas fonctionné pour moi mais celle-ci l'a fait: peak.telecommunity.com/dist/ez_setup.py
ajtrichards
1
@Cerin: Ce serait plus utile pour tout le monde si vous dites ce qui s'est passé lorsque vous avez essayé. Et avez-vous utilisé sudo, comme @Nik l'a noté ci-dessus?
Michael Scheper
124
sudo apt-get install --reinstall python-pkg-resources

corrigé pour moi dans Debian. On dirait que la désinstallation de certains packages .deb (ensemble tordu dans mon cas) a rompu le chemin utilisé par python pour trouver les packages

Marek
la source
9
J'utilise Python 3, j'ai donc dû exécuter sudo apt-get install --reinstall python3-pkg-resources et cela a été corrigé. Je vous remercie!
Robert Townley
n'a pas aidé avec yapf je suppose, quelque chose à voir avec python3 / python2
don bright
53

J'ai vu cette erreur en essayant d'installer rhodecode sur un virtualenv sur ubuntu 13.10. Pour moi, la solution était de courir

pip install --upgrade setuptools
pip install --upgrade distribute 

avant d'exécuter le rhodecode easy_install.

Ali Akdurak
la source
12
pip install --upgrade setuptoolsseul a fait l'affaire pour moi.
Ryan Tuck
j'avais besoinpip install --upgrade setuptools --user
dfrankow
5
Je ne peux pas courir à pip install --upgrade setuptoolscause de la même erreur:No module named pkg_resources
McLawrence
1
pip install --upgrade distributea fait le travail lors de l'utilisation du module venv de Python 3. --distributeDrapeau pris en charge par virtualenv pour Python 2 , mais il faut installer distributesur les environnements créés par venv.
Nirmal
34

Cela m'est aussi arrivé. Je pense que le problème se produira si le fichier requirements.txt contient une entrée "distribuer" alors que virtualenv utilise setuptools. Pip va essayer de patcher setuptools pour faire de la place pour la distribution, mais malheureusement il échouera à mi-chemin.

La solution simple est de supprimer votre virtualenv actuel puis de créer un nouveau virtualenv avec l'argument --distribute.

Un exemple si vous utilisez virtualenvwrapper:

$ deactivate
$ rmvirtualenv yourenv
$ mkvirtualenv yourenv --distribute
$ workon yourenv
$ pip install -r requirements.txt
landau
la source
2
cela m'a aidé lorsqu'aucune des autres solutions ne l'a fait (en utilisant Ubuntu 16.04)
MIkee
Pour les environnements créés par le module venv de Python 3, l'exécution pip install -U distributeaprès l'activation de l'environnement fera l'affaire.
Nirmal
17

Dans CentOS 6, l'installation du paquet python-setuptools l'a corrigé.

yum install python-setuptools
Paul
la source
Cela fonctionne dans Debian si vous remplacez "yum" par "sudo apt-get". Aussi: sudo apt-get install python3-setuptools
gridtrak
C'est celui qui l'a fait pour moi.
Tao Starbow
J'ai eu ce problème sur CentOS 7, et python-setuptools était déjà installé, mais l'a sudo yum reinstall python-setuptoolscorrigé.
coneslayer
Signalé le bogue à CentOS.org bugs.centos.org/view.php?id=14042
rjt
14

J'ai eu cette erreur plus tôt et la réponse la mieux notée m'a donné une erreur en essayant de télécharger le ez_setup.pyfichier. J'ai trouvé une autre source pour que vous puissiez exécuter la commande:

curl http://peak.telecommunity.com/dist/ez_setup.py | python

J'ai constaté que je devais également utiliser sudopour le faire fonctionner, vous devrez donc peut-être exécuter:

sudo curl http://peak.telecommunity.com/dist/ez_setup.py | sudo python

J'ai également créé un autre emplacement à partir duquel le script peut être téléchargé:

https://gist.github.com/ajtrichards/42e73562a89edb1039f3

ajtrichards
la source
La commande "curl" n'aurait pas besoin de sudo, elle pourrait donc être:curl http://peak.telecommunity.com/dist/ez_setup.py | sudo python
tombrown52
1
cette réponse m'a sauvé avec l'ajout de "| sudo python", car "| python" seul ne fonctionnait pas! Merci
patti_jane
14

Après avoir essayé plusieurs de ces réponses, puis avoir contacté un collègue, ce qui a fonctionné pour moi sur Ubuntu 16.04 était:

pip install --force-reinstall -U setuptools
pip install --force-reinstall -U pip

Dans mon cas, ce n'était qu'une ancienne version de l'oreiller 3.1.1 qui avait des problèmes (l'oreiller 4.x fonctionnait bien), et c'est maintenant résolu!

ptim
la source
8

J'avais besoin d'un peu plus de sudo. Ensuite, utilisez easy_install pour installer pip. Travaux.

sudo wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
sudo easy_install pip
Tarion
la source
1
sudone devrait pas être requis dans un virtualenv
igniteflow
Certes, je viens d'avoir le même problème sans virtualenv.
Tarion
5

J'ai corrigé l'erreur avec virtualenv en faisant ceci:

Copié pkg_resources.py depuis

/Library/Python/2.7/site-packages/setuptools

à

/Library/Python/2.7/site-packages/

Cela peut être une solution de contournement bon marché, mais cela a fonctionné pour moi.

.

Si les outils de configuration n'existent pas, vous pouvez essayer d'installer system-site-packages en tapant virtualenv --system-site-packages /DESTINATION DIRECTORY, en changeant la dernière partie pour être le répertoire dans lequel vous souhaitez installer. pkg_rousources.pysera sous ce répertoire dans lib / python2.7 / site-packages

mrgnw
la source
oui dans certains projets, cette solution est la meilleure (pour moi)
nguyên
3

Pour moi, cette erreur était due au fait que j'avais un sous-répertoire appelé "site"! Je ne sais pas si c'est un bug pip ou non, mais j'ai commencé avec:

/some/dir/requirements.txt / some / dir / site /

pip install -r requirements.txt ne fonctionnerait pas, me donnant l'erreur ci-dessus!

renommer le sous-dossier de "site" en "src" a résolu le problème! Peut-être que pip recherche des "sites-packages"? Fou.

jdg
la source
2

J'ai eu ce problème lorsque j'ai activé mon virtualenv en tant qu'utilisateur différent de celui qui l'a créé. Cela semble être un problème d'autorisation. J'ai découvert cela lorsque j'ai essayé la réponse de @cwc et l'ai vu dans la sortie:

Installing easy_install script to /path/env/bin
error: /path/env/bin/easy_install: Permission denied

Revenir à l'utilisateur qui a créé virtualenv, puis exécuter la pip installcommande d' origine s'est déroulé sans problème. J'espère que cela t'aides!

Martijn de Milliano
la source
2

J'ai aussi eu ce problème aujourd'hui. J'ai seulement eu le problème dans l'environnement virtuel.

La solution pour moi était de désactiver l'environnement virtuel, de supprimer puis de désinstaller virtualenv avec pip et de le réinstaller. Après cela, j'ai créé un nouvel env virtuel pour mon projet, puis pip a bien fonctionné à la fois dans l'environnement virtuel comme dans l'environnement normal.

arno_v
la source
2

On dirait qu'ils se sont éloignés de bitbucket et sont maintenant sur github ( https://github.com/pypa/setuptools )

La commande à exécuter est:

wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
shadyhill
la source
Fichier "/python/Python-3.5.1/Lib/urllib/request.py", ligne 162, dans urlopen return opener.open (url, data, timeout) Fichier "/python/Python-3.5.1/Lib/urllib /request.py ", ligne 465, dans le fichier ouvert" /python/Python-3.5.1/Lib/urllib/request.py ", ligne 488, dans _open 'unknown_open', req) File" /python/Python-3.5 .1 / Lib / urllib / request.py ", ligne 443, dans _call_chain result = func (* args) File" /python/Python-3.5.1/Lib/urllib/request.py ", ligne 1310, dans unknown_open raise URLError ('type d'url inconnu:% s'% type) urllib.error.URLError: <erreur urlopen type d'url inconnu: https>
JDOaktown
2

Pour moi, cela s'est avéré être un problème d'autorisations site-packages. Comme c'est seulement mon environnement de développement, j'ai augmenté les autorisations et tout fonctionne à nouveau:

sudo chmod -R a+rwx /path/to/my/venv/lib/python2.7/site-packages/
Kat
la source
2

Si vous rencontrez ce problème avec une application installée via conda , la solution (comme indiqué dans ce rapport de bogue) consiste simplement à installer les outils de configuration avec:

conda install setuptools
Gabriel
la source
2

Sous Windows, avec python 3.7, cela a fonctionné pour moi:

pip install --upgrade setuptools --user

--user installe les packages dans votre répertoire personnel, qui ne nécessite pas de privilèges d'administrateur.

David Jablonski
la source
2

la résolution simple est que vous pouvez utiliser conda pour mettre à niveau setuptools ou l'environnement entier. (Spécialement pour les utilisateurs de Windows.)

conda upgrade -c anaconda setuptools

si setuptools est supprimé, vous devez réinstaller setuptools.

conda install -c anaconda setuptools

si toutes ces méthodes ne fonctionnent pas, vous pouvez mettre à jour l'environnement conda. Mais je ne vous recommande pas de réinstaller et de désinstaller certains packages car cela aggraverait la situation.

weibin Wang
la source
1

Apparemment, il vous manque des setuptools. Certaines versions de virtualenv utilisent distribuer au lieu de setuptools par défaut. Utilisez l' --setuptoolsoption lors de la création du virtualenv ou définissez le VIRTUALENV_SETUPTOOLS=1dans votre environnement.

Danilo Bargen
la source
1

Dans mon cas, j'avais initialement installé 2 versions de python et plus tard, j'avais supprimé l'ancienne. Donc, tout en créant l'environnement virtuel

virtualenv venv

faisait référence au python désinstallé

Ce qui a fonctionné pour moi

python3 -m virtualenv venv

Il en va de même lorsque vous essayez d'utiliser pip.

Afsan Abdulali Gujarati
la source
0

Je suis tombé sur cette réponse lorsque j'essayais de suivre ce guide pour OSX . Ce qui a fonctionné pour moi, c'est qu'après avoir couru python get-pip, je devais AUSSI easy_install pip. Cela a résolu le problème de ne pas pouvoir exécuter pip du tout. J'ai fait installer un tas de vieux trucs macport. Cela peut avoir été en conflit.

KitsuneYMG
la source
0

réinstallez simplement votre setuptoolspar:

$ sudo wget https://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz#md5=7df2a529a074f613b509fb44feefefe74e
$ tar -zxvf setuptools-0.6c11.tar.gz
$ cd setuptools-0.6c11/
$ sudo python setup.py build
$ sudo python setup.py install
$ sudo pip install --upgrade setuptools

alors tout ira bien.

Scott Yang
la source
0

J'utilise CentOS 6.7, et mon python venait de passer de 2.6.6 à 2.7.11, après avoir essayé tant de réponses différentes, enfin la suivante fait le travail:

sudo yum install python-devel

J'espère aider quelqu'un dans la même situation.

shellbye
la source
0

Aucune des réponses publiées n'a fonctionné pour moi, j'ai donc réinstallé pip et cela a fonctionné!

sudo apt-get install python-setuptools python-dev build-essential 

sudo easy_install pip 

pip install --upgrade setuptools

(référence: http://www.saltycrane.com/blog/2010/02/how-install-pip-ubuntu/ )

user13107
la source
Traceback (dernier appel le plus récent): Fichier "/ usr / bin / easy_install", ligne 5, dans <module> depuis pkg_resources import load_entry_point ImportError: Aucun module nommé 'pkg_resources'
JDOaktown
owner-Dimension-3000 owner # sudo easy_install pip Traceback (dernier appel le plus récent): Fichier "/ usr / bin / easy_install", ligne 5, dans <module> depuis pkg_resources import load_entry_point ImportError: Aucun module nommé 'pkg_resources' owner-Dimension -3000 owner # pip install --upgrade setuptools Traceback (dernier appel le plus récent): Fichier "/ usr / bin / pip", ligne 5, dans <module> depuis pkg_resources import load_entry_point ImportError: Aucun module nommé 'pkg_resources' owner-Dimension -3000 numéro de propriétaire
JDOaktown
avez-vous d'abord supprimé la version pip installée?
user13107
0

J'ai rencontré ce problème après avoir mis à jour ma version d'Ubuntu. Il semble avoir traversé et supprimé les outils de configuration dans tous mes environnements virtuels.

Pour y remédier, j'ai réinstallé l'environnement virtuel dans le répertoire cible. Cela a nettoyé les outils de configuration manquants et a fait redémarrer les choses.

par exemple:

~/RepoDir/TestProject$ virtualenv TestEnvironmentDir
Steve D.
la source
0

Pour moi, une bonne solution consistait à utiliser l' --no-downloadoption virtualenv ( VIRTUALENV_NO_DOWNLOAD=1 toxpour tox.)

Baczek
la source
0

Sur Opensuse 42.1, le problème suivant a été résolu:

zypper in python-Pygments
David Hamner
la source
0

ImportError: Aucun module nommé pkg_resources: la solution est de réinstaller python pip en utilisant la commande suivante.

Étape: 1 Connectez-vous en tant qu'utilisateur root.

sudo su root

Étape: 2 Désinstallez le package python-pip s'il existe.

apt-get purge -y python-pip

Étape: 3 Téléchargez des fichiers à l'aide de la commande wget (Téléchargement de fichier dans pwd)

wget https://bootstrap.pypa.io/get-pip.py

Étape: 4 Exécutez le fichier python.

python ./get-pip.py

Étape: 5 Finalement, exécutez la commande d'installation.

apt-get install python-pip

Remarque: L' utilisateur doit être root.

Tukadiya Ramesh
la source
0

J'ai rencontré cette erreur dans mon environnement Google App Engine. Et pip install -t lib setuptoolsrésolu le problème.

Murat Çorlu
la source
0

Si vous utilisez Python 3, vous devez utiliser pip3 au lieu de pip. La commande ressemble à$ pip3 install requirements.txt

user3266968
la source