it-swarm.com.de

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

Wenn ich pip freeze starte, sehe ich (neben anderen erwarteten Paketen) pkg-resources==0.0.0. Ich habe einige Beiträge gesehen, in denen dieses Paket erwähnt wurde (einschließlich dieses ), aber keiner hat erklärt, was es ist oder warum es in der Ausgabe von pip freeze enthalten ist. Der Hauptgrund, warum ich mich wundere, ist aus Neugier, aber es scheint auch in einigen Fällen zu brechen, dass versucht wird, Pakete mit einer requirements.txt-Datei zu installieren, die mit pip freeze generiert wurde und die pkg-resources==0.0.0-Zeile enthält (zum Beispiel wenn Travis CI versucht um Abhängigkeiten über pip zu installieren und diese Zeile zu finden).

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

Aktualisieren:

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

76
elethan

Gemäß https://github.com/pypa/pip/issues/4022 handelt es sich um einen Fehler, der darauf zurückzuführen ist, dass Ubuntu falsche Metadaten für das Piping bereitstellt. Nein, es scheint keinen guten Grund für dieses Verhalten zu geben. Ich habe einen Folgefehler bei Ubuntu eingereicht. https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1635463

Um die vorherige Antwort zu sichern, sollte es sicher sein, diese Zeile aus Ihrer Requirements.txt zu entfernen. Beispiel für eine Make-Datei-Zeilengruppe, die Ihre Paketliste sicher einfriert (in Ihrem Makefile ablegen und mit make freeze ausführen):

freeze:
    pip freeze | grep -v "pkg-resources" > requirements.txt
93
Craig Wright

Für den Teil Ihrer Frage "ist es in Ordnung, diese Zeile zu entfernen?":

Ich habe das gleiche Problem hier auf einem Ubuntu 16.04 mit genau dieser Zeile in den Anforderungen entwickelt. Bei der Bereitstellung auf einem Debian 8.5, auf dem "pip install -r requirements.txt" pip ausgeführt wird, wird beanstandet, dass pkg-resources "nicht gefunden" wird, jedoch ein globales Paket "python-pkg-resources" installiert ist, sodass die Abhängigkeit erfüllt sein sollte. Gleiches auf Ubuntu: Das Paket existiert auch dort.

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

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

8
karlsebal

Auf Ubuntu können Sie dies beheben, indem Sie das Ubuntu-Paket virtualenv entfernen und die neue Version von pip installieren:

Sudo apt remove virtualenv
Sudo pip install -U virtualenv
0
ahmed