2013-06-19 15 views
31

Ho un progetto con più dipendenze pacchetto, i requisiti principali elencati in requirements.txt. Quando chiamo pip freeze stampa i pacchetti attualmente installati come lista normale. Io preferirei di ottenere anche le loro relazioni di dipendenza, qualcosa di simile:Esiste un modo per mostrare gli alberi di dipendenza per i pacchetti pip?

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 

L'obiettivo è quello di rilevare le dipendenze di ogni pacchetto specifico:

Werkzeug==0.8.3 
    Flask==0.9 
    Flask-Admin==1.0.6 

e inserire questi nella mia attuale requirements.txt. Ad esempio, per questo ingresso:

Flask==0.9 
Flask-Admin==1.0.6 
Werkzeug==0.8.3 

vorrei ottenere:

Flask==0.9 
    Jinja2==2.7 
Flask-Admin==1.0.6 
Werkzeug==0.8.3 

C'è un modo mostrare le dipendenze dei pacchetti installati pip?

+0

So che hai fatto questa domanda quattro anni fa e ho diligentemente segnato la risposta che hai ottenuto rapidamente come migliore risposta. Grazie per averlo fatto. Tuttavia, darei un'occhiata alla risposta che hai ricevuto da Anthon un anno dopo. pipdeptree è eccezionale !!! Apparentemente @naiquevin non è stato in SO dall'aprile 2015, ma ha creato uno strumento davvero carino qui. –

risposta

49

Si dovrebbe dare un'occhiata allo 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 

Non genera un file requirements.txt come indicato direttamente. Tuttavia la sorgente (255 linee di codice Python) dovrebbe essere relativamente facile da modificare alle proprie esigenze, o in alternativa si può (come indicato @MERose è nel README pipdeptree 0,3) fuori uso:

pipdeptree --freeze --nowarn | grep -P '^[\w0-9\-=.]+' > requirements.txt 

La versione 0.5 di pipdeptree consente anche l'output JSON con l'opzione --json, che è più facilmente parsing della macchina, a scapito di essere meno leggibile.

+0

In base a https://pypi.python.org/pypi/pipdeptree/0.3, 'pipdeptree | grep -P '^ \ w +' 'stampa un requisito.txt. – MERose

+0

@MERose Grazie per averlo indicato. Devo aver ancora utilizzato la versione 0.2 quando ho scritto questo. – Anthon

+0

Non funziona per 'bokeh' :(Questo pacchetto ha un'organizzazione specifica dei requisiti in modo che pip non li mostri, ma conda fa. – Sklavit

12

yolk in grado di visualizzare le dipendenze per i pacchetti, a condizione che essi

  • sono stati installati tramite setuptools
  • venuto con metadati che include informazioni sulle dipendenze

    $ yolk -d Theano 
    Theano 0.6.0rc3 
        scipy>=0.7.2 
        numpy>=1.5.0 
    
+0

Grazie. Questa soluzione non completa, ma comunque utile utilità. – tbicr

+0

Non sono sicuro che ci possa essere una soluzione completa - il problema è che le informazioni sulle dipendenze non sempre esistono (ad esempio per i pacchetti installati tramite 'distutils', che non supporta i metadati del pacchetto) –

+1

tuorlo non ha py3k supporto al momento della scrittura. – yegle

Problemi correlati