Pip brach. Wie behebe ich den DistributionNotFound-Fehler?

146

Immer wenn ich versuche, pip zu verwenden, erhalte ich eine Fehlermeldung. Zum Beispiel:

$ sudo pip install gevent-websocket

Traceback (most recent call last):  
File "/usr/local/bin/pip", line 5, in <module>
from pkg_resources import load_entry_point
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2675, in <module>
parse_requirements(__requires__), Environment()
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 552, in resolve
raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: pip==0.8.1

Ich bin versucht, den Wert von in pip == 0.8.2 zu ändern, aber ich habe nicht das Gefühl, mit den Konsequenzen des "Hackens" meiner Installation fertig zu werden ... Ich verwende Python 2.7 und pip ist in Version 0.8.2.

Stephan
quelle
Viel Schmerz hier. Die einfache generische Lösung besteht darin, die installierte Pip von folgender Adresse herunterzuladen: https://bootstrap.pypa.io/get-pip.py und diese Datei dann auszuführen (mit Python). Die anderen Korrekturen sind sehr systemabhängig und im Allgemeinen chaotisch und die folgenden Vorschläge funktionieren oft nicht (basierend auf meiner Erfahrung mit zwei verschiedenen Kindern des Systems)
GregD

Antworten:

253

Ich finde dieses Problem in meinem MacBook. Der Grund dafür ist, dass ich, wie @Stephan sagte, easy_install pip installiere und die Mischung beider py-Paketverwaltungstools zu dem pkg_resources.DistributionNotFoundProblem führte. Die Lösung ist:

easy_install --upgrade pip

Denken Sie daran: Verwenden Sie einfach eines der oben genannten Tools, um Ihre Py-Pakete zu verwalten.

NewPtone
quelle
55
Ha das gibt mir nur den Fehler:pkg_resources.DistributionNotFound: distribute==0.6.36
Timmmm
2
Funktioniert auch unter Mac OS X 10.9 hervorragend. Vielen Dank!
Anton Babenko
2
Möglicherweise stellen Sie fest, dass a) Sie sudo easy_install --upgrade pip ausführen müssen und b) bei Verwendung von pip möglicherweise Fehler bezüglich des Rads auftreten. An diesem Punkt sehen Sie sich das an: stackoverflow.com/questions/20905350/…
mchicago
@PiotrDobrogost Ich bin anderer Meinung - der Artikel, den Sie verlinkt haben, befasst sich mit der Verwendung von virtualenv, andernfalls haben Sie eine Unmenge von Paketen und es kann zu Leistung und Konflikten zwischen Anwendungen kommen - in diesem Fall möchten wir virtualenv verwenden. Um virtualenv zu installieren, möchten Sie es jedoch global für alle installieren und daher sudo easyinstall. für die Installation von virtualenv . Dadurch kann virtualenv tatsächlich funktionieren. Wie kann man virtual env sonst installieren, ohne eine manuelle (und daher schwer zu wartende) Installation durchzuführen?
Michigan
1
got .. 'sudo easy_install3 --upgrade pip' hat es geschafft
pavan
31

Ich habe 0.8.1 in 0.8.2 in / usr / local / bin / pip ersetzt und alles hat wieder funktioniert.

__requires__ = 'pip==0.8.2'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('pip==0.8.2', 'console_scripts', 'pip')()
    )

Ich habe pip über easy_install installiert, was mir wahrscheinlich diese Kopfschmerzen verursacht hat. Ich denke, so solltest du es heutzutage machen.

$ sudo apt-get install python-pip python-dev build-essential 
$ sudo pip install --upgrade pip 
$ sudo pip install --upgrade virtualenv
Stephan
quelle
13
Ich versuche immer zu vermeiden, reine Python-Pakete mit OS-Paketmanagern zu installieren - und ich empfehle Ihnen, dasselbe zu tun. Ubuntu / Debian hat das setuptools-Paket einmal kaputt gemacht und es hat einige Kopfschmerzen verursacht, weil die Leute Pakete mit pip nicht deinstallieren konnten (aufgrund ihrer Änderungen).
Hugo Tavares
mit apt oder yum sind nicht agnostisch genug! Die Strategien auf dieser Seite sind für die lokale Entwicklung geeignet. Bitte tun Sie dies jedoch nicht für Bereitstellungen.
Ken
Gleich hier hat sich Pip beim Upgrade auf 1.3.1 auf einem Mac umgebracht, während Pip selbst erwähnte, dass es immer noch 1.2.1 war ...
Anthony Liekens
@PiotrDobrogost siehe Kommentar oben - es wird in diesem Fall benötigt, damit virtualenv funktioniert.
Michigan
27

Ich hatte dieses Problem, als ich Homebrew verwendete. Hier ist die Lösung aus Problem Nr. 26900

python -m pip install --upgrade --force pip
Louis Cremen
quelle
Es kann hilfreich sein, dies sowohl mit als auch ohne die Option --user zu versuchen (letztere erfordert sudo).
Ray
11

Versuchen Sie eine Neuinstallation mit dem Skript get-pip:

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

Dies stammt von der Pip Github-Seite und hat für mich funktioniert.

Pavan
quelle
7

Wenn Sie unter CentOS arbeiten, stellen Sie sicher, dass Sie das YUM-Paket "python-setuptools" installiert haben

yum install python-setuptools

Es wurde für mich behoben.

Dave Lancea
quelle
6

Die Ursache des Problems sind häufig veraltete Skripte im Unterverzeichnis bin(Linux) oder Scripts(Windows). Ich werde dies anhand eines Problems erklären, auf das ich als Beispiel gestoßen bin.

Ich hatte virtualenv Version 1.10 in meinen Benutzer-Site-Paketen installiert (die Tatsache, dass es sich um Benutzer-Site-Pakete handelt, nicht um System-Site-Pakete, ist hier irrelevant).

pdobrogost@host:~$ which virtualenv
/home/users/pdobrogost/.local/bin/virtualenv
pdobrogost@host:~$ virtualenv --version
1.10

Nach dem Upgrade auf Version 1.11 wurde folgende Fehlermeldung angezeigt:

pdobrogost@host:~$ virtualenv --version  
Traceback (most recent call last):   
  File "/home/users/pdobrogost/.local/bin/virtualenv", line 5, in <module>
    from pkg_resources import load_entry_point   
File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 2701, in <module>
    return self.__dep_map   
File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 572, in resolve
    if insert: 
pkg_resources.DistributionNotFound: virtualenv==1.10

Die /home/users/pdobrogost/.local/bin/virtualenvin der Fehlermeldung erwähnte Datei sah folgendermaßen aus:

#!/opt/python/2.7.5/bin/python2.7
# EASY-INSTALL-ENTRY-SCRIPT: 'virtualenv==1.10','console_scripts','virtualenv'
__requires__ = 'virtualenv==1.10'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('virtualenv==1.10', 'console_scripts', 'virtualenv')()
    ) 

Dort sehen wir, dass das virtualenvSkript nicht aktualisiert wurde und weiterhin die zuvor installierte Version 1.10 von virtualenv erfordert.
Installieren Sie nun virtualenv wie folgt neu

pdobrogost@host:~$ pip install --user --upgrade virtualenv
Downloading/unpacking virtualenv from https://pypi.python.org/packages/py27/v/virtualenv/virtualenv-1.11.1-py27-none-any.whl#md5=265770b61de41d34d2e9fdfddcdf034c
  Using download cache from /home/users/pdobrogost/.pip_download_cache/https%3A%2F%2Fpypi.python.org%2Fpackages%2Fpy27%2Fv%2Fvirtualenv%2Fvirtualenv-1.11.1-py27-none-any.whl
Installing collected packages: virtualenv
Successfully installed virtualenv
Cleaning up...

hilft nicht (auch nicht pip install --user --upgrade --force-reinstall virtualenv), da das Skript /home/users/pdobrogost/.local/bin/virtualenvunverändert bleibt.

Die einzige Möglichkeit, dies zu beheben, bestand darin, virtualenv * -Skripte manuell aus dem /home/users/pdobrogost/.local/bin/Ordner zu entfernen und virtualenv erneut zu installieren. Danach beziehen sich neu generierte Skripte auf die richtige Version des Pakets:

pdobrogost@host:~$ virtualenv --version
1.11
Piotr Dobrogost
quelle
6

Ich konnte dies folgendermaßen lösen:

$ brew update
$ brew doctor
$ brew uninstall python
$ brew install python --build-from-source    # took ~5 mins
$ python --version                           # => Python 2.7.9
$ pip install --upgrade pip

Ich laufe mit den folgenden Sachen (Stand: 2. Januar 2015):

OS X Yosemite
Version 10.10.1

$ brew -v
Homebrew 0.9.5

$ python --version
Python 2.7.9

$ ipython --version
2.2.0

$ pip --version
pip 6.0.3 from /usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip-6.0.3-py2.7.egg (python 2.7)

$ which pip
/usr/local/bin/pip
hernamesbarbara
quelle
5

Ich hatte das ähnliche Problem in OSx. Mein Stacktrace sagte

raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: setuptools>=11.3

Dann habe ich folgendes gemacht

sudo pip install --upgrade setuptools

Dies löste das Problem für mich. Hoffe, jemand wird dies nützlich finden.

Nabin
quelle
1
Dies hat mein Problem unter Windows 10 behoben.
Mark Allen
1
Dies hat das Problem für uns unter CentOS 6 behoben.
Dan Phillimore
2

Unter Mac OS X (MBP) wurden meine Probleme durch Folgendes behoben (entnommen aus einer anderen hier gefundenen Antwort):

C02L257NDV33:~ jjohnson$ brew install pip
Error: No available formula for pip
Homebrew provides pip via: `brew install python`. However you will then
have two Pythons installed on your Mac, so alternatively you can:
    sudo easy_install pip
C02L257NDV33:~ jjohnson$ sudo easy_install pip

Die Hauptursache hier ist eindeutig eine sekundäre Methode zur Installation von Python (in meinem Fall Homebrew). Hoffentlich können die Verantwortlichen für das Pip-Skript dieses Problem beheben, da es 2 Jahre nach der ersten Meldung über Stack Overflow immer noch relevant ist.

Joe Johnson
quelle
1

Ich hatte dieses Problem, weil ich Python / Pip mit einem seltsamen installiert habe ~/.pydistutils.cfg, an das ich mich nicht erinnern konnte. Löschte es, neu installiert (mit pybrew), und alles war in Ordnung.

polm23
quelle
1

In meinem Fall (Sam-Problem, aber andere Pakete) gab es keine Versionsabhängigkeit. Eine Folge von Pip-Deinstallation und Pip-Installation hat geholfen.

Rhoerbe
quelle