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?
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.
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
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.
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