পাইপ প্যাকেজগুলির জন্য নির্ভরতা গাছগুলি দেখানোর কোনও উপায় আছে কি?


91

আমার একাধিক প্যাকেজ নির্ভরতা সহ একটি প্রকল্প রয়েছে, প্রধান প্রয়োজনীয়তা তালিকাভুক্ত হচ্ছে requirements.txt। যখন আমি pip freezeএটি বলি তখন ইনস্টল হওয়া প্যাকেজগুলি সাধারণ তালিকা হিসাবে মুদ্রণ করে। আমি তাদের নির্ভরতা সম্পর্ক পেতেও পছন্দ করব, এরকম কিছু:

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

লক্ষ্যটি প্রতিটি নির্দিষ্ট প্যাকেজের নির্ভরতা সনাক্ত করা:

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

এবং আমার স্রোতে এগুলি .োকান requirements.txt। উদাহরণস্বরূপ, এই ইনপুটটির জন্য:

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

আমি পেতে চাই:

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

ইনস্টলড পাইপ প্যাকেজগুলির নির্ভরতা দেখানোর কোনও উপায় কী আছে?


আমি জানি যে আপনি এই প্রশ্নটি চার বছর আগে জিজ্ঞাসা করেছিলেন এবং আপনি যে উত্তরটি দ্রুত পেয়েছিলেন তা যথাযথভাবে চিহ্নিত করে ফেলেছিলেন সেরা উত্তর হিসাবে। এটা করার জন্য ধন্যবাদ। যাইহোক, আমি এক বছর পরে অ্যান্টনের কাছ থেকে আপনি যে উত্তর পেয়েছিলেন তা একবার দেখে নেব। পিপডেপ্ট্রি হ'ল দুর্দান্ত! স্পষ্টতই @naiquevin এপ্রিল 2015 থেকে এসও তে নেই, তবে তিনি এখানে একটি দুর্দান্ত সরঞ্জাম তৈরি করেছেন।
রব ফাগেন

উত্তর:


137

আপনার এক নজর করা উচিত 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.txtআপনি সরাসরি নির্দেশিত হিসাবে এটি কোনও ফাইল উত্পন্ন করে না । তবে উত্স (পাইথন কোডের 255 লাইন) আপনার প্রয়োজনগুলিতে সংশোধন করা অপেক্ষাকৃত সহজ হওয়া উচিত, অথবা বিকল্পভাবে আপনি করতে পারেন (যেমন @ মেরোজ ইঙ্গিত করা হয়েছে পিপডপ্ট্রি 0.3 রিডেমিতে) ব্যবহারের বাইরে:

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

০.০ সংস্করণটি জেএসএন আউটপুটটিকে অপশনের pipdeptreeসাথে মঞ্জুরি দেয় --json, এটি সহজেই মেশিন পার্সেবল, কম পঠনযোগ্য হিসাবে ব্যয় করে।


মতে pypi.python.org/pypi/pipdeptree/0.3 , pipdeptree | grep -P '^\w+'একটি requirements.txt ছাপে।
মেরোজ

@ মেরোজ এটি নির্দেশ করার জন্য ধন্যবাদ। আমি এটি লিখার সময় অবশ্যই অবশ্যই 0.2 সংস্করণটি ব্যবহার করেছি।
অ্যান্থন

এটি এর জন্য কাজ করছে না bokeh:( এই প্যাকেজের প্রয়োজনীয়তার নির্দিষ্ট সংস্থা রয়েছে যাতে পাইপগুলি তাদের দেখায় না, তবে কনডা করে
স্ক্লাভিট

12

সতর্কতা: কেবল পাই 2 / বিসর্জন

yolk প্যাকেজগুলির জন্য নির্ভরতা প্রদর্শন করতে পারে, তবে তারা সরবরাহ করবে

  • মাধ্যমে ইনস্টল করা হয়েছিল setuptools
  • মেটাডেটা নিয়ে এসেছিল যার মধ্যে নির্ভরতা সম্পর্কিত তথ্য অন্তর্ভুক্ত থাকে

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

ধন্যবাদ এটি সম্পূর্ণ সমাধান নয়, তবে সহায়ক ইউটিলিটি।
tbicr

সম্পূর্ণ সমাধান হতে পারে কিনা তা সম্পর্কে আমি নিশ্চিত নই - সমস্যাটি হ'ল নির্ভরতা সম্পর্কিত তথ্য সর্বদা বিদ্যমান থাকে না (উদাহরণস্বরূপ প্যাকেজগুলির মাধ্যমে ইনস্টল হওয়া প্যাকেজগুলি distutils, যা প্যাকেজ মেটাডেটা সমর্থন করে না)
ali_m

4
লেখার সময় হিসাবে কুসুমের পাইকারির সমর্থন নেই।
ইগল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.