Jak programowo uzyskać listę zależności pakietu Pythona?
Standard setup.py
ma to udokumentowane, ale nie mogę znaleźć łatwego sposobu, aby uzyskać do niego dostęp z Pythona lub wiersza poleceń.
Idealnie szukam czegoś takiego:
$ pip install somepackage --only-list-deps
kombu>=3.0.8
billiard>=3.3.0.13
boto>=2.26
lub:
>>> import package_deps
>>> package = package_deps.find('somepackage')
>>> print package.dependencies
['kombu>=3.0.8', 'billiard>=3.3.0.13', 'boto>=2.26']
Uwaga, nie mówię o importowaniu pakietu i znajdowaniu wszystkich przywoływanych modułów. Chociaż może to znaleźć większość pakietów zależnych, nie byłoby w stanie znaleźć wymaganego minimalnego numeru wersji. To jest przechowywane tylko w pliku setup.py.
Odpowiedzi:
Oprócz
pip show [package name]
polecenia istniejepipdeptree
.Po prostu zrób
następnie uruchomić
i pokaże ci twoje zależności w formie drzewa, np.
Projekt znajduje się pod adresem https://github.com/naiquevin/pipdeptree , gdzie znajdziesz również informacje o użytkowaniu.
źródło
pipdeptree
pokazuje zależności wszystkich zainstalowanych pakietów, a nie tylko tych z danego pakietu. Chociaż można filtrować jego--json
dane wyjściowe, nadal zależy to od pakietów, które są już zainstalowane.requirements.txt
:)-p
opcji, aby wybrać tylko kilka pakietów, których zależności chcesz zbadać.pipdeptree
był bardzo pomocny podczas optymalizacjirequirements.txt
.$ pipdeptree | grep -P '^\w+'
Wyprowadza tylko pakiety najwyższego poziomu. Więcej informacji tutajSpróbuj użyć
show
polecenia wpip
, na przykład:Aktualizacja (pobieranie plików z określoną wersją):
źródło
Requires
sekcję$ pip3 show beautifulsoup4
że jest pustyRequires:
- czy beautifulsoup4 nie zależy od niczego?beautifulsoup4
.Sporo odpowiedzi tutaj pokazuje, że pip jest importowany do użytku w programach. Dokumentacja pip zdecydowanie odradza korzystanie z tej pip .
Zamiast uzyskiwać dostęp
pkg_resources
za pośrednictwem importu pip, możesz po prostu zaimportowaćpkg_resources
bezpośrednio i użyć tej samej logiki (co jest w rzeczywistości jednym z sugerowanych rozwiązań w dokumentach pip połączonych dla każdego, kto chce programowo zobaczyć metainformacje pakietu).Jeśli masz problemy ze znalezieniem dokładnej nazwy pakietu,
WorkingSet
instancja zwrócona przezpkg_resources.working_set
narzędzia,__iter__
dzięki czemu możesz wydrukować je wszystkie i miejmy nadzieję, że znajdziesz tam swoją :)to znaczy
Działa to zarówno z pythonem 2, jak i 3 (chociaż musisz dostosować instrukcje print dla python2)
źródło
(TO JEST ODPOWIEDŹ NA DZIEDZICTWO I NALEŻY UNIKAĆ NOWOCZESNYCH WERSJI PIP I POZOSTAWIĆ TUTAJ W CELU ODNIESIENIA DO STARSZYCH WERSJI PIP) Odpowiedź Alexa jest dobra (+1). W Pythonie:
powinien zwrócić coś takiego jak
gdzie twisted to nazwa pakietu, którą można znaleźć w słowniku:
aby je wszystkie wymienić:
powinien dać ci takie listy:
źródło
_vendor
Atrybut nie wydaje się istnieć w wersji pip19.1.1
(Edit: W porządku, wydaje się, że przeniósł się dopkg_resources
spakowania w najnowszej wersji Pythona!)pip show
część jest dobra, a nie reszta). Albo użyjpip show
, pipdeptree lub zobaczyć odpowiedź Jordan Mackie Korzystanie setuptools "pkg_resources
bezpośrednio.Użyj https://libraries.io/ . Jest to dobre miejsce do zbadania zależności przed instalacją przy użyciu pip.
Na przykład. Wpisz google-cloud-storage i wyszukaj, a następnie możesz znaleźć stronę biblioteki ( https://libraries.io/rubygems/google-cloud-storage ). Wybierz wersję, dla której chcesz zbadać zależności z „Wersji” (domyślnie jest to najnowsza). W sekcji „Zależności” możesz znaleźć listę zależności i ich obsługiwane wersje.
źródło
Spróbuj tego zgodnie z tym artykułem w Pythonie:
Będzie wyglądać następująco:
źródło