Po uruchomieniu pip freeze
widzę (między innymi oczekiwanymi pakietami) pkg-resources==0.0.0
. Widziałem kilka postów wspominających o tym pakiecie (w tym o tym ), ale żaden z nich nie wyjaśniał, co to jest ani dlaczego jest uwzględniany w danych wyjściowych programu pip freeze
. Głównym powodem, dla którego się zastanawiam, jest z ciekawości, ale wydaje się, że w niektórych przypadkach psuje to wszystko, gdy próbuję zainstalować pakiety z requirements.txt
plikiem wygenerowanym za pomocą pip freeze
tego pkg-resources==0.0.0
wiersza (na przykład, gdy Travis CI próbuje zainstalować zależności za pośrednictwem pip
i znajduje to linia).
Co to jest pkg-resources
i czy można usunąć tę linię z requirements.txt
?
Aktualizacja:
Odkryłem, że ta linia wydaje się istnieć tylko w danych wyjściowych, pip freeze
gdy jestem w virtualenv
. Nadal nie jestem pewien, co to jest lub co robi, ale zbadam dalej, wiedząc, że jest to prawdopodobnie powiązane virtualenv
.
źródło
pip
? Myślę, że mogło to być coś, czego przegapili w starym wydaniu, ponieważ8.1.2
nie mam wpisupkg-resources
. (Które nie powinno, ponieważ jestem prawie pewien, żepkg-resources
jest z tymsetuptools
).virtualenv
, a nawet, gdy jestem nie w virtualenv nie widzę go albo. To nadal nie wyjaśnia, co to jest, ale przynajmniej jest to wskazówka, którą mogę zbadać.Odpowiedzi:
Według https://github.com/pypa/pip/issues/4022 jest to błąd wynikający z podania przez Ubuntu nieprawidłowych metadanych do pip. Więc nie, wydaje się, że nie ma dobrego powodu takiego zachowania. Złożyłem dalszy błąd w Ubuntu. https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1635463
Aby wykonać kopię zapasową poprzedniej odpowiedzi, powinno być bezpieczne usunięcie tego wiersza z pliku Requirements.txt. Oto przykład sekcji Make file, która bezpiecznie zamraża listę pakietów (upuść swój Makefile i uruchom z
make freeze
):źródło
AttributeError: module 'pkg_resources' has no attribute 'iter_entry_points'
, więc myślę, że najlepiej go usunąć zrequirements.txt
Jeśli chodzi o część pytania „ czy można usunąć tę linię? ”:
Mam tutaj ten sam problem rozwijający się na Ubuntu 16.04 z tą samą linią w wymaganiach. Podczas wdrażania na uruchomionym Debianie 8.5
"pip install -r requirements.txt"
pip, narzeka, że „nie znaleziono” pkg-resources, ale jest zainstalowany pakiet globalny „python-pkg-resources”, więc zależność powinna być spełniona. To samo dotyczy ubuntu: pakiet również tam istnieje.Jak stwierdzono tutaj , wydaje się, że jest to jakiś „pakiet zainstalowany niejawnie”.
Tak więc: jeśli używasz Debiana / Ubuntu z zainstalowanymi zasobami python-pkg-resources, usunięcie tej linii powinno być bezpieczne . Zrobiłem to i wszystko działa dobrze. Ponieważ jednak nie jestem ekspertem w tej dziedzinie, należy pamiętać, że może to prowadzić do komplikacji podczas wdrażania na innym komputerze.
źródło
virtualenv
?znalazłem tę odpowiedź w tym linku: https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1635463
autor: Louis Bouchard (louis) napisane 16.11.2019:
U mnie to zadziałało. Ale ja nie jestem ekspertem, więc gdyby ktoś lepiej to zrozumiał, byłoby świetnie, gdyby to wyjaśnił.
Dzień dobry,
co jest warte, problem pochodzi z zdebianizowanej wersji virtualenv, która używa debundowanej wersji pkg_resource, która jest dodawana do virtualenv w czasie tworzenia:
Korzystanie z zainstalowanej przez pip wersji virtualenv może być wykonalnym obejściem:
hth, ... Louis
źródło
W systemie Ubuntu możesz to naprawić, usuwając
virtualenv
pakiet Ubuntu i instalując nową wersję zpip
:źródło