Tenho um projeto com várias dependências de pacote, os principais requisitos listados em requirements.txt
. Quando eu ligo, pip freeze
ele imprime os pacotes atualmente instalados como uma lista simples. Eu preferiria também obter seus relacionamentos de dependência, mais ou menos assim:
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
O objetivo é detectar as dependências de cada pacote específico:
Werkzeug==0.8.3
Flask==0.9
Flask-Admin==1.0.6
E insira isso na minha corrente requirements.txt
. Por exemplo, para esta entrada:
Flask==0.9
Flask-Admin==1.0.6
Werkzeug==0.8.3
Eu gostaria de obter:
Flask==0.9
Jinja2==2.7
Flask-Admin==1.0.6
Werkzeug==0.8.3
Existe alguma maneira de mostrar as dependências dos pacotes pip instalados?
python
pip
requirements.txt
tbicr
fonte
fonte
Respostas:
Você deve dar uma olhada em
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
Não gera um
requirements.txt
arquivo como você indicou diretamente. No entanto, o código-fonte (255 linhas de código python) deve ser relativamente fácil de modificar de acordo com suas necessidades ou, alternativamente, você pode (como @MERose indicado no README do pipdeptree 0.3) usar:pipdeptree --freeze --warn silence | grep -P '^[\w0-9\-=.]+' > requirements.txt
A versão 0.5 do
pipdeptree
também permite a saída JSON com a--json
opção, que é mais facilmente analisável por máquina, ao custo de ser menos legível.fonte
pipdeptree | grep -P '^\w+'
imprime um requirements.txt.bokeh
:( Este pacote tem uma organização específica de requisitos, então pip não os mostra, mas conda sim.Aviso: somente py2 / abandonware
yolk
pode exibir dependências para pacotes, desde que elessetuptools
veio com metadados que incluem informações de dependência
$ yolk -d Theano Theano 0.6.0rc3 scipy>=0.7.2 numpy>=1.5.0
fonte
distutils
, que não suporta metadados de pacote)