Was ist "pkg-resources == 0.0.0" in der Ausgabe des Befehls pip freeze

157

Wenn ich laufe, pip freezesehe ich (unter anderem erwartete Pakete) pkg-resources==0.0.0. Ich habe einige Posts gesehen, in denen dieses Paket erwähnt wurde (einschließlich dieses ), aber keine, in denen erklärt wurde, was es ist oder warum es in der Ausgabe von enthalten ist pip freeze. Der Hauptgrund, den ich mich wundere, ist aus Neugier, aber es scheint auch in einigen Fällen zu brechen, wenn versucht wird, Pakete mit einer requirements.txtDatei zu installieren, die mit pip freezeder pkg-resources==0.0.0Zeile generiert wurde (zum Beispiel, wenn Travis CI versucht, Abhängigkeiten durch zu installieren pipund dies findet Linie).

Was ist pkg-resourcesund ist es in Ordnung, diese Zeile zu entfernen requirements.txt?

Aktualisieren:

Ich habe festgestellt, dass diese Zeile nur in der Ausgabe von zu existieren scheint, pip freezewenn ich in einem bin virtualenv. Ich bin mir immer noch nicht sicher, was es ist oder was es tut, aber ich werde weiter untersuchen, in dem Wissen, dass es wahrscheinlich damit zusammenhängt virtualenv.

elethan
quelle
"In einigen Fällen scheint es zu kaputt zu gehen, wenn versucht wird, Pakete mit einer anp.txt-Datei zu installieren, die mit pip freeze generiert wurde und die Zeile pkg-resources == 0.0.0 enthält." . Können Sie vielleicht ein Beispiel dafür geben?
Dimitris Fasarakis Hilliard
@ Jim, guter Punkt. Ich habe das Beispiel hinzugefügt, auf das ich gestoßen bin.
Elethan
hm, wovon ist deine Version pip? Ich denke, dies könnte etwas gewesen sein, das sie in einer alten Veröffentlichung verpasst 8.1.2haben, da ich keinen Eintrag dafür habe pkg-resources. (Was es nicht sollte, da ich mir ziemlich sicher bin, pkg-resourceskommt mit setuptools).
Dimitris Fasarakis Hilliard
1
@ Jim, es ist mir gerade eingefallen, dass es damit zusammenhängt virtualenv, und wenn ich nicht in einer virtuellen Umgebung bin, sehe ich es auch nicht. Dies erklärt immer noch nicht, was es ist, ist aber zumindest ein Hinweis, den ich untersuchen kann.
Elethan
1
Mögliches Duplikat von Warum friert pip "pkg-resources == 0.0.0" ein?
Louis

Antworten:

181

Laut https://github.com/pypa/pip/issues/4022 ist dies ein Fehler, der darauf zurückzuführen ist, dass Ubuntu Pip falsche Metadaten zur Verfügung stellt. Nein, es scheint keinen guten Grund für dieses Verhalten zu geben. Ich habe einen Follow-up-Fehler bei Ubuntu gemeldet. https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1635463

Um die vorherige Antwort zu sichern, sollte es sicher sein, diese Zeile aus Ihrer Anforderung.txt zu entfernen. Hier ist ein Beispiel für die Zeilengruppe "Datei erstellen", in der Ihre Paketliste sicher eingefroren wird (fügen Sie Ihr Makefile ein und führen Sie es aus make freeze):

freeze:
    pip freeze | grep -v "pkg-resources" > requirements.txt
Craig Wright
quelle
9
Es ist kein Ubuntu-spezifischer Fehler, Debian hat das gleiche Problem
Quallen
1
Zuerst schien @MohammedShareefC Idee zu funktionieren, aber dann bekam ich AttributeError: module 'pkg_resources' has no attribute 'iter_entry_points', also denke ich, dass es am besten ist, es einfach zu entfernenrequirements.txt
arod
2
verursacht immer noch Kopfschmerzen beim Versuch, sich auf Heroku zu entfalten
Martins
3
Dies scheint immer noch ein Problem mit Ubuntu 18.04
Carmine Tambascia
3
Immer noch ein Problem mit Python 3.8 unter Ubuntu
19.04
13

Für den Teil Ihrer Frage „ ist es in Ordnung , diese Linie zu entfernen? “:

Ich habe das gleiche Problem hier auf einem Ubuntu 16.04 mit genau dieser Linie in den Anforderungen zu entwickeln. Bei der Bereitstellung auf einem Debian 8.5 "pip install -r requirements.txt"beschwert sich Pip, dass pkg-resources "nicht gefunden" wird, aber ein globales Paket "python-pkg-resources" installiert ist, sodass die Abhängigkeit erfüllt sein sollte. Gleiches gilt für Ubuntu: Das Paket existiert auch dort.

Wie hier angegeben , scheint es sich um ein "implizit installiertes Paket" zu handeln.

Also: Wenn Sie auf einem Debian / Ubuntu sind, auf dem Python-pkg-Ressourcen installiert sind, sollte es sicher sein, diese Zeile zu entfernen . Ich habe es getan und alles läuft gut. Da ich jedoch kein Experte in diesem Bereich bin, sollten Sie berücksichtigen, dass dies bei der Bereitstellung auf einem anderen Computer zu Komplikationen führen kann.

Karlsebal
quelle
Danke für die Information. Am Ende habe ich es auch entfernt und auch keine Konsequenzen gesehen, aber die gleichen Vorbehalte, die Sie erwähnen, gelten natürlich. Wo installieren Sie auch zu / von einem virtualenv?
Elethan
Ja, ich habe versucht, innerhalb einer virtuellen Umgebung zu installieren. Da ein systemweites Paket vorhanden ist und ich nichts durcheinander bringen wollte, habe ich nicht versucht, systemweit per Pip zu installieren.
Karlsebal
1

fand diese Antwort in diesem Link: https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1635463

von: Louis Bouchard (louis) schrieb am 16.11.2019:

Es hat bei mir funktioniert. Aber ich bin kein Experte. Wenn jemand es besser verstehen würde, wäre es großartig, wenn er es erklären würde.

Hallo,

Für das, was es wert ist, kommt das Problem von der debianisierten Version von virtualenv, die eine entbündelte Version von pkg_resource verwendet, die zur Erstellungszeit in virtualenv hinzugefügt wird:

$ virtualenv .
Running virtualenv with interpreter /usr/bin/python2
New python executable in /home/caribou/git/quividi/test/bin/python2
Also creating executable in /home/caribou/git/quividi/test/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
$ pip freeze
pkg-resources==0.0.0

Die Verwendung der von pip installierten Version von virtualenv kann eine praktikable Problemumgehung sein:

$ sudo apt -y purge python3-virtualenv virtualenv tox
$ pip install virtualenv
$ virtualenv .
pip install virtualenv
Collecting virtualenv
  Downloading https://files.pythonhosted.org/packages/c5/97/00dd42a0fc41e9016b23f07ec7f657f636cb672fad9cf72b80f8f65c6a46/virtualenv-16.7.7-py2.py3-none-any.whl (3.4MB)
    100% |████████████████████████████████| 3.4MB 351kB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-16.7.7
$ virtualenv .
New python executable in /home/caribou/git/quividi/test/bin/python
Installing setuptools, pip, wheel...
done.
$ source bin/activate
$ pip freeze
$

hth, ... Louis

Panxogol
quelle
-2

Unter Ubuntu können Sie dies beheben, indem Sie das Ubuntu- virtualenvPaket entfernen und eine neue Version installieren von pip:

sudo apt remove virtualenv
sudo pip install -U virtualenv
ahmed
quelle