Mam projekt z wieloma zależnościami od pakietów, a główne wymagania są wymienione w requirements.txt
. Kiedy dzwonię pip freeze
, wyświetla aktualnie zainstalowane pakiety jako zwykłą listę. Wolałbym również uzyskać ich relacje zależności, coś takiego:
Flask==0.9
Jinja2==2.7
Werkzeug==0.8.3
Jinja2==2.7
Werkzeug==0.8.3
Flask-Admin==1.0.6
Flask==0.9
Jinja2==2.7
Werkzeug==0.8.3
Celem jest wykrycie zależności poszczególnych pakietów:
Werkzeug==0.8.3
Flask==0.9
Flask-Admin==1.0.6
I włóż to do mojego prądu requirements.txt
. Na przykład dla tego wejścia:
Flask==0.9
Flask-Admin==1.0.6
Werkzeug==0.8.3
Chciałbym dostać:
Flask==0.9
Jinja2==2.7
Flask-Admin==1.0.6
Werkzeug==0.8.3
Czy jest jakiś sposób pokazania zależności zainstalowanych pakietów pip?
python
pip
requirements.txt
tbicr
źródło
źródło
Odpowiedzi:
Powinieneś spojrzeć na
pipdeptree
:$ pip install pipdeptree $ pipdeptree -fl Warning!!! Cyclic dependencies found: ------------------------------------------------------------------------ xlwt==0.7.5 ruamel.ext.rtf==0.1.1 xlrd==0.9.3 openpyxl==2.0.4 - jdcal==1.0 pymongo==2.7.1 reportlab==3.1.8 - Pillow==2.5.1 - pip - setuptools
Nie generuje
requirements.txt
pliku, jak wskazałeś bezpośrednio. Jednak źródło (255 linii kodu Pythona) powinno być stosunkowo łatwe do zmodyfikowania do twoich potrzeb, lub alternatywnie możesz (jak wskazano @MERose w pliku README pipdeptree 0.3) z użycia:pipdeptree --freeze --warn silence | grep -P '^[\w0-9\-=.]+' > requirements.txt
Wersja 0.5
pipdeptree
umożliwia również wyjście JSON z--json
opcją, która jest łatwiejsza do przeanalizowania przez komputer, kosztem mniejszej czytelności.źródło
pipdeptree | grep -P '^\w+'
wyświetla wymagania.txt.bokeh
:( Ten pakiet ma określoną organizację wymagań, więc pip ich nie pokazuje, ale conda tak.Ostrzeżenie: tylko py2 / throwonware
yolk
mogą wyświetlać zależności dla pakietów, pod warunkiem, że onesetuptools
przyszedł z metadanymi, które zawierają informacje o zależnościach
$ yolk -d Theano Theano 0.6.0rc3 scipy>=0.7.2 numpy>=1.5.0
źródło
distutils
, które nie obsługują metadanych pakietów)