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


99

ইনস্টলেশনটি অতিক্রম না করেই আমি pip installইনস্টল করা সমস্ত প্যাকেজগুলি দ্রুত দেখতে চাই ।


সম্পর্কিত: stackoverflow.com/q/9232568/183791
dusan

4
হয়তো কুসুম সাহায্য করতে পারে?
jadkik94

এই সমস্যার জন্য বিকল্প উত্তর সহ আরেকটি প্রশ্ন: stackoverflow.com/questions/41816693/...
pgmank

উত্তর:


95

গৃহীত উত্তরটি পাইপের আরও বর্তমান সংস্করণগুলির জন্য আর প্রাসঙ্গিক নয় এবং একাধিক মন্তব্যের অনুমতি না দিয়ে তাত্ক্ষণিক উত্তর দেয় না তাই আমি একটি আপডেট উত্তর সরবরাহ করছি।

এই পিপ সংস্করণের সাথে পরীক্ষা করা হয় 8.1.2 , 9.0.1 , 10.0.1 , এবং 18.1

লিনাক্স ব্যবহারের ক্ষেত্রে আপনার বর্তমান ডিরেক্টরিকে ছড়িয়ে না দিয়ে আউটপুট পেতে

pip download [package] -d /tmp --no-binary :all: -v

-d পাইপ ডিরেক্টরিকে বলে যে ডাউনলোডের মধ্যে ফাইল থাকা উচিত।

আরও ভাল, আউটপুট হিসাবে কেবল নির্ভরতা পেতে প্যাকেজের নাম হিসাবে যুক্তিটি সহ এই স্ক্রিপ্টটি ব্যবহার করুন:

#!/bin/sh

PACKAGE=$1
pip download $PACKAGE -d /tmp --no-binary :all:-v 2>&1 \
| grep Collecting \
| cut -d' ' -f2 \
| grep -Ev "$PACKAGE(~|=|\!|>|<|$)"

এছাড়াও এখানে উপলব্ধ ।


এটি ব্যবহারের একটি খুব ( খুব ) অশোধিত পাঠ requirements.txt:< requirements.txt egrep -v "^#" | egrep -v "^$" | xargs -L 1 -I % sh -c 'echo %; echo "======"; ./deps.sh %; echo "";
ইয়ান ক্লার্ক

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

4
কিছু প্যাকেজ কেবল বাইনারি সরবরাহ করে, তাই --no-binary :all:এটি ভাল ধারণা নয়। একটি প্রকল্প যা কেবল চাকা প্রেরণ করেছিল এবং এসডিস্ট ব্যর্থ হবে।
wim

4
সব নির্ভরতা প্যাকেজের জন্য ডাউনলোড এবং কম্পাইল আপ এই শেষ যা খুবই ধীর হতে পারেন ....
লুই ইয়াং

4
নোট করুন যে এটি ইতিমধ্যে ইনস্টল করা নির্ভরতাগুলি তালিকাভুক্ত করে না (যা ওপির জন্য সূক্ষ্ম)।
জিপিহেমসলে

66

আমার প্রকল্পটি দেখুন জনিডিপ !

স্থাপন:

pip install johnnydep

ব্যবহারের উদাহরণ:

$ johnnydep requests
name                       summary
-------------------------  ----------------------------------------------------------------------
requests                   Python HTTP for Humans.
├── certifi>=2017.4.17     Python package for providing Mozilla's CA Bundle.
├── chardet<3.1.0,>=3.0.2  Universal encoding detector for Python 2 and 3
├── idna<2.7,>=2.5         Internationalized Domain Names in Applications (IDNA)
└── urllib3<1.23,>=1.21.1  HTTP library with thread-safe connection pooling, file post, and more.

আরও জটিল গাছ:

$ johnnydep ipython 
name                              summary
--------------------------------  -----------------------------------------------------------------------------
ipython                           IPython: Productive Interactive Computing
├── appnope                       Disable App Nap on OS X 10.9
├── decorator                     Better living through Python with decorators
├── jedi>=0.10                    An autocompletion tool for Python that can be used for text editors.
│   └── parso==0.1.1              A Python Parser
├── pexpect                       Pexpect allows easy control of interactive console applications.
│   └── ptyprocess>=0.5           Run a subprocess in a pseudo terminal
├── pickleshare                   Tiny 'shelve'-like database with concurrency support
├── prompt-toolkit<2.0.0,>=1.0.4  Library for building powerful interactive command lines in Python
│   ├── six>=1.9.0                Python 2 and 3 compatibility utilities
│   └── wcwidth                   Measures number of Terminal column cells of wide-character codes
├── pygments                      Pygments is a syntax highlighting package written in Python.
├── setuptools>=18.5              Easily download, build, install, upgrade, and uninstall Python packages
├── simplegeneric>0.8             Simple generic functions (similar to Python's own len(), pickle.dump(), etc.)
└── traitlets>=4.2                Traitlets Python config system
    ├── decorator                 Better living through Python with decorators
    ├── ipython-genutils          Vestigial utilities from IPython
    └── six                       Python 2 and 3 compatibility utilities

আমি এটি ডাউনলোড করেছি এবং এটি ব্যবহার করছি, এটি দুর্দান্ত প্যাকেজ। কিন্তু এটি কি প্যাকেজ ইনস্টল করার প্রয়োজন নেই? ওপি বিশেষত এমন একটি পদ্ধতির জন্য অনুরোধ করছে যা ইনস্টলেশন প্রয়োজন হয় না। সাবধান করার জন্য গুরুত্বপূর্ণ।
so860

4
@ so860 না, এটি প্যাকেজ ইনস্টল করার প্রয়োজন হয় না। এটি পুরো বিষয়টি, এটি একটি বিচ্ছিন্ন পরিবেশে কাজ করে।
wim 6'19

পরিষ্কার হতে হবে: johnnydepনিজেকে ইনস্টল করা নির্ভরতা ইনস্টল করে।
জিপিহেমসলে

4
@ উইম: এই প্রকল্পটি খাঁটি ব্রিল্যান্স! এটা ভালবাসা!
জোনাথন দেখটিয়ার

@ জোনাথনদেখতিয়ার দয়া করে এই শব্দটির জন্য আপনাকে ধন্যবাদ :)
উইম

17

যদি এবং কেবলমাত্র প্যাকেজ ইনস্টল করা হয় তবে আপনি ব্যবহার করতে পারেন pip show <package>। জন্য দেখুনRequires: আউটপুট শেষে দায়ের করেন। স্পষ্টতই, এটি আপনার প্রয়োজনীয়তা ভঙ্গ করে তবে তা তবে কার্যকর হতে পারে।

উদাহরণ স্বরূপ:

$ pip --version
pip 7.1.0 [...]
$ pip show pytest
---
Metadata-Version: 2.0
Name: pytest
Version: 2.7.2
Summary: pytest: simple powerful testing with Python
Home-page: http://pytest.org
Author: Holger Krekel, Benjamin Peterson, Ronny Pfannschmidt, Floris Bruynooghe and others
Author-email: holger at merlinux.eu
License: MIT license
Location: /home/usr/.tox/develop/lib/python2.7/site-packages
Requires: py

4
এটি কেবল প্রত্যক্ষ প্রয়োজনীয়তাগুলি দেখায়, সমস্ত সংক্রামক নির্ভরতা অনুপস্থিত হবে। এবং এটি একটি ইনস্টলেশন প্রয়োজন। সুতরাং, এটি সত্যিই প্রশ্নের উত্তর দেয় না।
উইম

15

দ্রষ্টব্য: এই উত্তর ব্যবহৃত বৈশিষ্ট্য ছিল 2014 সালে অবচিত এবং 2015 সরানো । আধুনিকের জন্য প্রযোজ্য অন্যান্য উত্তরগুলি দেখুন pip

সরাসরি পাইপের সাহায্যে আপনি যে নিকটস্থ হন তা হ'ল --no-installযুক্তিটি ব্যবহার করে :

pip install --no-install <package>

উদাহরণস্বরূপ, সেলারি ইনস্টল করার সময় এটি আউটপুট:

Downloading/unpacking celery                                                                                   
  Downloading celery-2.5.5.tar.gz (945Kb): 945Kb downloaded
  Running setup.py egg_info for package celery

    no previously-included directories found matching 'tests/*.pyc'
    no previously-included directories found matching 'docs/*.pyc'
    no previously-included directories found matching 'contrib/*.pyc'
    no previously-included directories found matching 'celery/*.pyc'
    no previously-included directories found matching 'examples/*.pyc'
    no previously-included directories found matching 'bin/*.pyc'
    no previously-included directories found matching 'docs/.build'
    no previously-included directories found matching 'docs/graffles'
    no previously-included directories found matching '.tox/*'
Downloading/unpacking anyjson>=0.3.1 (from celery)
  Downloading anyjson-0.3.3.tar.gz
  Running setup.py egg_info for package anyjson

Downloading/unpacking kombu>=2.1.8,<2.2.0 (from celery)
  Downloading kombu-2.1.8.tar.gz (273Kb): 273Kb downloaded
  Running setup.py egg_info for package kombu

Downloading/unpacking python-dateutil>=1.5,<2.0 (from celery)
  Downloading python-dateutil-1.5.tar.gz (233Kb): 233Kb downloaded
  Running setup.py egg_info for package python-dateutil

Downloading/unpacking amqplib>=1.0 (from kombu>=2.1.8,<2.2.0->celery)
  Downloading amqplib-1.0.2.tgz (58Kb): 58Kb downloaded
  Running setup.py egg_info for package amqplib

Successfully downloaded celery anyjson kombu python-dateutil amqplib

স্বীকার করা যায়, এটি অস্থায়ী ফাইল আকারে কিছু ক্রাফ্ট ছেড়ে দেয় তবে এটি লক্ষ্যটি অর্জন করে। আপনি যদি ভ্যুচুয়ালভের সাথে এটি করছেন (যা আপনার হওয়া উচিত) <virtualenv root>/buildডিরেক্টরিটি মুছে ফেলা যতটা সহজ clean


8
এই জন্য কারণ যে মেটাডেটা setup.py বাইরে কোন অস্তিত্ব নেই সাথে তাই অসদৃশ বলে হয় rpmবা dpkgযেখানে আপনি উপরে এবং কোয়েরি যে একটি মেটাডেটা সূচক গড়ে তুলতে pipএবং pypiযে ভাবে কাজ করে না। সুতরাং আমাদের প্রতিটি প্রয়োজনের উপর দিয়ে যেতে হবে।

12
আমি চেষ্টা করেছি pip --no-install celeryকিন্তু আমি ত্রুটিটি পেয়েছি no such option: --no-install(পাইপ 1.2.1)
কর্নেল প্যানিক

4
আমি মনে করি তিনি বোঝাতে চেয়েছিলেনpip install --no-install celery
এন্ট্রপি করুন

23
আমার পাইপ সংস্করণে (1.5 .4) --no-installপতাকাটি হ্রাস পেয়েছে ।
জিয়ান

4
1.5.4 এর জন্য, পিপ ইনস্টল করুন - ডাউনলোডলোড =। - না-ব্যবহার-চাকা সেলারি
রাডটেক

-1

আদেশ pip install <package> --download <path>@Radtek এর মন্তব্যে যেমন ব্যবহার করা উচিত, সেহেতু 7.0.0 (2015-05-21), --no-ইনস্টল থেকে সরানো হয়নিpip । এটি প্রয়োজনীয় নির্ভরতাগুলি ডাউনলোড করবে <path>


10
হাস্যকরভাবে, --downloadপাশাপাশি অবচিত করা হয়েছে। ক্যানোনিকাল কমান্ড এখন করছে বলে মনে হচ্ছে pip download <package> -d /tmp --no-binary :all:হিসাবে প্রস্তাব দ্বারা কার্ড ঠকাই
সিসিল কারি

-1

আরেকটি বিকল্প অনুরূপ একটি সাহায্যকারী স্ক্রিপ্ট ব্যবহার করা এই এক যা ব্যবহার pip.req.parse_requirementsবিশ্লেষণ করতে এপিআই requirements.txtফাইল এবং একটি distutils.core.setupবিশ্লেষণ করতে প্রতিস্থাপন setup.pyফাইল।


-1

আমি @ অ্যানোভালোকারিংয়ের একটি বিকল্প সমাধান উদ্ধৃত করছি :

পাইপি প্যাকেজ মেটাডেটা সহ একটি জেএসএন শেষ পয়েন্ট সরবরাহ করে:

>>> import requests
>>> url = 'https://pypi.org/pypi/{}/json'
>>> json = requests.get(url.format('pandas')).json()
>>> json['info']['requires_dist']
['numpy (>=1.9.0)', 'pytz (>=2011k)', 'python-dateutil (>=2.5.0)']
>>> json['info']['requires_python']
'>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*'

নির্দিষ্ট প্যাকেজ সংস্করণের জন্য, URL এ একটি অতিরিক্ত সংস্করণ বিভাগ যুক্ত করুন:

https://pypi.org/pypi/pandas/0.22.0/json

এছাড়াও আপনি যদি কনডা ব্যবহার করছেন (@ এসপিএলমিস্টারের পরামর্শ অনুসারে ), আপনি ব্যবহার করতে পারেন:

conda info package==X.X.X

নির্দিষ্ট সংস্করণের জন্য নির্ভরতা সহ তথ্য প্রদর্শন করতে বা:

conda info package

সেই প্যাকেজের সমস্ত সমর্থিত সংস্করণ সম্পর্কে নির্ভরতা সহ তথ্য প্রদর্শন করতে।


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