Jawaban yang diterima tidak lagi relevan untuk versi pip yang lebih baru dan tidak memberikan jawaban langsung tanpa membaca banyak komentar jadi saya memberikan jawaban yang diperbarui.
Ini diuji dengan pip versi 8.1.2 , 9.0.1 , 10.0.1 , dan 18.1 .
Untuk mendapatkan output tanpa mengacaukan direktori Anda saat ini di Linux, gunakan
Pembacaan yang sangat ( sangat ) kasar dari requirements.txtpenggunaan ini:< requirements.txt egrep -v "^#" | egrep -v "^$" | xargs -L 1 -I % sh -c 'echo %; echo "======"; ./deps.sh %; echo "";
Ian Clark
@ hans-musgrave membuat poin bagus dalam jawaban lain yang tidak saya perhatikan sebelumnya, jadi perbarui skrip bash untuk hanya mengecualikan baris yang cocok dengan paket bersama dengan akhir baris atau awal penentu versi yang valid daripada baris apa pun yang berisi nama paket.
Jmills
2
Beberapa paket hanya menyediakan biner, jadi --no-binary :all:ini bukan ide yang bagus. Sebuah proyek yang hanya mengirimkan roda dan bukan sdist akan gagal.
wim
3
Ini akhirnya mengunduh dan mengkompilasi semua paket ketergantungan yang bisa sangat lambat ....
Louis Yang
1
Perhatikan bahwa ini tidak mencantumkan dependensi yang sudah diinstal (yang bagus untuk OP).
$ 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.
Pohon yang lebih kompleks:
$ 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 2and3 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
Saya mengunduh ini dan menggunakannya, ini adalah paket yang hebat. TAPI bukankah itu membutuhkan paket untuk diinstal? OP secara khusus meminta pendekatan yang tidak memerlukan instalasi. Penting untuk diingat.
so860
5
@ so860 Tidak, ini tidak memerlukan paket yang akan diinstal. Itulah intinya, ia bekerja di lingkungan yang terisolasi.
wim
Untuk memperjelas: menginstal johnnydepsendiri menginstal dependensi.
GPHemsley
1
@wim: proyek ini murni pengawasan! Suka !
Jonathan DEKHTIAR
@JonathanDEKHTIAR terima kasih atas kata-katanya yang baik :)
wim
17
Jika dan hanya jika paket diinstal, Anda dapat menggunakan pip show <package>. CariRequires: di akhir output. Jelas, ini melanggar kebutuhan Anda tetapi mungkin berguna.
Sebagai contoh:
$ 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
Ini hanya menunjukkan persyaratan langsung, semua dependensi transitif akan hilang. Dan itu membutuhkan instalasi. Jadi, itu tidak benar-benar menjawab pertanyaan itu.
Hal terdekat yang bisa Anda dapatkan dengan pip secara langsung adalah dengan menggunakan --no-installargumen:
pip install --no-install <package>
Misal, berikut outputnya saat memasang seledri:
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
Memang, ini meninggalkan beberapa celah dalam bentuk file sementara, tetapi itu mencapai tujuan. Jika Anda melakukan ini dengan virtualenv (yang seharusnya), pembersihannya semudah menghapus <virtualenv root>/builddirektori.
Alasan untuk ini adalah bahwa metadata tidak ada di luar setup.py jadi tidak seperti say with rpmatau di dpkgmana Anda membangun indeks metadata di atas dan menanyakannya pipdan pypitidak bekerja seperti itu. Jadi kita harus melewati setiap persyaratan.
12
Saya mencoba pip --no-install celerytetapi saya menerima kesalahan no such option: --no-install(pip 1.2.1)
Kolonel Panic
4
Saya pikir yang dia maksudpip install --no-install celery
entropi
23
Pada versi pip saya (1.5.4), --no-installflag tidak digunakan lagi.
Jian
4
Untuk 1.5.4, gunakan pip install --download =. - seledri tanpa roda
radtek
-1
Perintah tersebut pip install <package> --download <path>harus digunakan, seperti yang disebutkan dalam komentar oleh @radtek, sejak 7.0.0 (2015-05-21), --no-install dihapus dari pip. Ini akan mengunduh dependensi yang diperlukan <path>.
Konyolnya, --downloadsudah tidak digunakan lagi. Perintah kanonik sekarang tampaknya pip download <package> -d /tmp --no-binary :all:seperti yang disarankan oleh The Card Cheat .
Cecil Curry
-1
Opsi lainnya adalah menggunakan skrip pembantu yang mirip dengan yang ini yang menggunakan pip.req.parse_requirementsAPI untuk mengurai requirements.txtfile dan distutils.core.setuppengganti untuk setup.pyfile parse .
Saya tidak memilih karena titik akhir json ini tidak dapat diandalkan. Sebagai contoh lihat boto3, require_dist adalah null tetapi itu adalah proyek yang tentunya memiliki dependensi dalam metadata .
Jawaban:
Jawaban yang diterima tidak lagi relevan untuk versi pip yang lebih baru dan tidak memberikan jawaban langsung tanpa membaca banyak komentar jadi saya memberikan jawaban yang diperbarui.
Ini diuji dengan pip versi 8.1.2 , 9.0.1 , 10.0.1 , dan 18.1 .
Untuk mendapatkan output tanpa mengacaukan direktori Anda saat ini di Linux, gunakan
-d
memberi tahu pip direktori tempat unduhan harus memasukkan file.Lebih baik, cukup gunakan skrip ini dengan argumen sebagai nama paket untuk hanya mendapatkan dependensi sebagai output:
#!/bin/sh PACKAGE=$1 pip download $PACKAGE -d /tmp --no-binary :all:-v 2>&1 \ | grep Collecting \ | cut -d' ' -f2 \ | grep -Ev "$PACKAGE(~|=|\!|>|<|$)"
Juga tersedia disini .
sumber
requirements.txt
penggunaan ini:< requirements.txt egrep -v "^#" | egrep -v "^$" | xargs -L 1 -I % sh -c 'echo %; echo "======"; ./deps.sh %; echo "";
--no-binary :all:
ini bukan ide yang bagus. Sebuah proyek yang hanya mengirimkan roda dan bukan sdist akan gagal.Lihat proyek saya johnnydep !
Instalasi:
Contoh penggunaan:
$ 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.
Pohon yang lebih kompleks:
$ 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
sumber
johnnydep
sendiri menginstal dependensi.Jika dan hanya jika paket diinstal, Anda dapat menggunakan
pip show <package>
. CariRequires:
di akhir output. Jelas, ini melanggar kebutuhan Anda tetapi mungkin berguna.Sebagai contoh:
$ 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
sumber
Hal terdekat yang bisa Anda dapatkan dengan pip secara langsung adalah dengan menggunakan
--no-install
argumen:Misal, berikut outputnya saat memasang seledri:
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
Memang, ini meninggalkan beberapa celah dalam bentuk file sementara, tetapi itu mencapai tujuan. Jika Anda melakukan ini dengan virtualenv (yang seharusnya), pembersihannya semudah menghapus
<virtualenv root>/build
direktori.sumber
rpm
atau didpkg
mana Anda membangun indeks metadata di atas dan menanyakannyapip
danpypi
tidak bekerja seperti itu. Jadi kita harus melewati setiap persyaratan.pip --no-install celery
tetapi saya menerima kesalahanno such option: --no-install
(pip 1.2.1)pip install --no-install celery
--no-install
flag tidak digunakan lagi.Perintah tersebut
pip install <package> --download <path>
harus digunakan, seperti yang disebutkan dalam komentar oleh @radtek, sejak 7.0.0 (2015-05-21), --no-install dihapus daripip
. Ini akan mengunduh dependensi yang diperlukan<path>
.sumber
--download
sudah tidak digunakan lagi. Perintah kanonik sekarang tampaknyapip download <package> -d /tmp --no-binary :all:
seperti yang disarankan oleh The Card Cheat .Opsi lainnya adalah menggunakan skrip pembantu yang mirip dengan yang ini yang menggunakan
pip.req.parse_requirements
API untuk mengurairequirements.txt
file dandistutils.core.setup
pengganti untuksetup.py
file parse .sumber
Saya mengutip solusi alternatif dari @onnovalkering :
Juga jika Anda menggunakan conda ( seperti yang disarankan oleh @ShpielMeister ), Anda dapat menggunakan:
untuk menampilkan informasi, termasuk dependensi untuk versi tertentu atau:
untuk menampilkan informasi, termasuk dependensi tentang semua versi yang didukung dari paket itu.
sumber
boto3
, require_dist adalah null tetapi itu adalah proyek yang tentunya memiliki dependensi dalam metadata .