643 Stimmen

Kein Modul namens pkg_resources

Ich bin eine Django-Anwendung auf einem Dev-Server bereitstellen und bin diesen Fehler zu treffen, wenn ich ausführen 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_resources scheint verteilt zu werden mit setuptools . Ursprünglich dachte ich, dass dies vielleicht nicht in die Python in der Virtualenv installiert werden könnte, also installierte ich setuptools 2.6 (dieselbe Version wie Python) mit folgendem Befehl zu den Python-Site-Paketen in der Virtualenv hinzufügen:

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

EDITAR: Dies geschieht nur innerhalb der Virtualenv. Wenn ich eine Konsole außerhalb der Virtualenv öffne, dann pkg_resources ist vorhanden, aber ich erhalte immer noch den gleichen Fehler.

Irgendwelche Ideen, warum pkg_resources nicht auf dem Weg ist?

866voto

cwc Punkte 8207

Juli 2018 Update

Die meisten Menschen sollten jetzt die pip install setuptools (eventuell mit sudo ).

Einige müssen möglicherweise die python-setuptools Paket über ihren Paketmanager ( apt-get install , yum install , usw.).

Dieses Problem kann stark von Ihrem Betriebssystem und Ihrer Entwicklungsumgebung abhängen. Sehen Sie sich die Legacy/Andere Antworten unten an, wenn die obige Lösung für Sie nicht funktioniert.

Erläuterung

Diese Fehlermeldung wird durch einen fehlenden/defekten Python verursacht setuptools Paket. Gemäß dem Kommentar von Matt M. und setuptools Ausgabe #581 ist das unten erwähnte Bootstrap-Skript nicht mehr die empfohlene Installationsmethode.

Die Anweisungen für das Bootstrap-Skript werden weiter unten stehen, falls sie noch für jemanden hilfreich sind.

Erbe Antwort

Ich bin auf die gleiche ImportError heute bei dem Versuch, pip zu verwenden. Irgendwie ist die setuptools Paket in meiner Python-Umgebung gelöscht worden war.

Um das Problem zu beheben, führen Sie das Setup-Skript für setuptools :

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

(oder wenn Sie nicht über wget installiert ist (z. B. OS X), versuchen Sie

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

möglicherweise mit sudo vorangestellt).

Wenn Sie eine beliebige Version von distribute oder jede setuptools unter 0.6, müssen Sie es zuerst deinstallieren.*

Siehe Einbauanleitung für weitere Einzelheiten.


* Wenn Sie bereits eine funktionierende distribute auf den "Kompatibilitäts-Wrapper" aktualisieren, der den Übergang zu setuptools ist einfacher. Aber wenn die Dinge bereits kaputt sind, sollten Sie das nicht versuchen.

152voto

Marek Punkte 1649
sudo apt-get install --reinstall python-pkg-resources

hat das Problem bei mir in Debian behoben. Es scheint, als ob die Deinstallation einiger .deb-Pakete (in meinem Fall Twisted Set) den Pfad, den Python benutzt, um Pakete zu finden, kaputt gemacht hat

88voto

Ali Akdurak Punkte 3651

Ich habe diesen Fehler gesehen, als ich versucht habe, rhodecode in einer Virtualenv auf Ubuntu 13.10 zu installieren. Für mich war die Lösung, Folgendes auszuführen

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

bevor ich easy_install rhodecode ausführe.

37voto

pram Punkte 1428

Das ist mir auch passiert. Ich denke, das Problem tritt auf, wenn die requirements.txt einen "distribute"-Eintrag enthält, während die virtualenv setuptools verwendet. Pip wird versuchen, setuptools zu patchen, um Platz für distribute zu schaffen, aber leider wird es auf halbem Weg scheitern.

Die einfache Lösung ist, die aktuelle virtualenv zu löschen und dann eine neue virtualenv mit dem Argument --distribute zu erstellen.

Ein Beispiel für die Verwendung von virtualenvwrapper:

$ deactivate
$ rmvirtualenv yourenv
$ mkvirtualenv yourenv --distribute
$ workon yourenv
$ pip install -r requirements.txt

20voto

ptim Punkte 13533

Nachdem ich mehrere dieser Antworten ausprobiert und mich dann an einen Kollegen gewandt hatte, funktionierte bei mir unter Ubuntu 16.04 folgendes:

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

In meinem Fall war es nur eine alte Version von pillow 3.1.1, die Probleme bereitete (pillow 4.x funktionierte einwandfrei), und das ist nun behoben!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X