Pip paketleri için bağımlılık ağaçlarını göstermenin bir yolu var mı?


91

Birden çok paket bağımlılığı olan bir projem var, ana gereksinimler listeleniyor requirements.txt. Aradığımda pip freezeşu anda kurulu paketleri düz liste olarak yazdırıyor. Bağımlılık ilişkilerini de almayı tercih ederim, şöyle bir şey:

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

Amaç, her bir özel paketin bağımlılıklarını tespit etmektir:

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

Ve bunları benim akımıma ekle requirements.txt. Örneğin, bu girdi için:

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

Almak isterim:

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

Kurulu pip paketlerinin bağımlılıklarını göstermenin bir yolu var mı?


Bu soruyu dört yıl önce sorduğunuzu ve çabucak aldığınız yanıtı özenle en iyi yanıt olarak işaretlediğinizi biliyorum. Bunu yaptığınız için teşekkür ederim. Ancak bir yıl sonra Anthon'dan aldığınız cevaba bir göz atacağım. pipdeptree HARİKA !!! Görünüşe göre @naiquevin Nisan 2015'ten beri SO'da değil, ama burada gerçekten güzel bir araç yarattı.
Rob Fagen

Yanıtlar:


137

Şunlara bir göz atmalısınız 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

requirements.txtDoğrudan belirttiğiniz gibi bir dosya oluşturmaz . Bununla birlikte, kaynağı (255 satır python kodu) ihtiyaçlarınıza göre değiştirmek nispeten kolay olmalıdır veya alternatif olarak kullanabilirsiniz (@MERose pipdeptree 0.3 README'de olduğu gibi):

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

0.5 sürümü , daha az okunabilir olma pahasına daha kolay makine ayrıştırması pipdeptreeolan --jsonseçenekle JSON çıktısına izin verir .


Pypi.python.org/pypi/pipdeptree/0.3'e göre , pipdeptree | grep -P '^\w+'bir requirements.txt yazdırır.
MERose

@MERose Bunu işaret ettiğiniz için teşekkürler. Bunu yazarken hala 0.2 sürümünü kullanıyor olmalıyım.
Anthon

O için çalışmıyor bokehpip bunları göstermiyor bu yüzden Bu paket gerekliliklerinin özel organizasyon var :( ama Conda yapar.
Sklavit

12

Uyarı: yalnızca py2 / vazgeçme yazılımı

yolk paketler için bağımlılıkları görüntüleyebilirler.

  • üzerinden yüklendi setuptools
  • bağımlılık bilgilerini içeren meta verilerle geldi

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

Teşekkürler. Bu tam çözüm değil, ancak faydalı bir yardımcı programdır.
tbicr

Tam bir çözüm olup olamayacağından emin değilim - sorun, bağımlılık bilgisinin her zaman mevcut olmamasıdır (örneğin distutils, paket meta verilerini desteklemeyen aracılığıyla yüklenen paketler için )
ali_m

5
sarısı yazı yazarken py3k desteğine sahip değil.
yegle
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.