インストールを行わずに、インストールされるすべてのパッケージをすばやく確認したいと思いますpip install
。
10 に答える
これは、pipバージョン8.1.2、9.0.1、10.0.1、および18.1でテストされました。
Linuxで現在のディレクトリを乱雑にすることなく出力を取得するには、
pip download [package] -d /tmp --no-binary :all: -v
-d
ダウンロードがファイルを配置するディレクトリをpipに指示します。
より良いのは、引数をパッケージ名としてこのスクリプトを使用するだけで、依存関係のみを出力として取得することです。
#!/bin/sh
PACKAGE=$1
pip download $PACKAGE -d /tmp --no-binary :all:-v 2>&1 \
| grep Collecting \
| cut -d' ' -f2 \
| grep -Ev "$PACKAGE(~|=|\!|>|<|$)"
こちらからもご利用いただけます。
私のプロジェクトjohnnydepをチェックしてください!
インストール:
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
パッケージがインストールされている場合にのみ、を使用できます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
注:この回答で使用されている機能は2014年に廃止され、2015年に削除されました。現代に適用される他の回答を参照してください
pip
。
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(そうあるべきです)でこれを行っている場合、クリーンアップは<virtualenv root>/build
ディレクトリを削除するのと同じくらい簡単です。
@onnovalkeringから別の解決策を引用します:
PyPiは、JSONエンドポイントにパッケージメタデータを提供します。
>>> 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を使用している場合(@ShpielMeisterによって提案されているように)、次を使用できます。
conda info package==X.X.X
特定のバージョンの依存関係などの情報を表示するには、または次のようにします。
conda info package
そのパッケージのサポートされているすべてのバージョンに関する依存関係を含む情報を表示します。
pipdeptree ( )を使用しpip install pipdeptree
ます。パッケージをインストールする必要があります。
$ pipdeptree -p pandas
pandas==1.2.2
- numpy [required: >=1.16.5, installed: 1.19.5]
- python-dateutil [required: >=2.7.3, installed: 2.8.1]
- six [required: >=1.5, installed: 1.15.0]
- pytz [required: >=2017.3, installed: 2021.1]
johnnydep( )を使用しpip install johnnydep
ます。パッケージのホイールをダウンロードするため、速度が低下します。
$ johnnydep pandas
2021-06-09 11:01:21 [info ] init johnnydist [johnnydep.lib] dist=pandas parent=None
2021-06-09 11:01:22 [info ] init johnnydist [johnnydep.lib] dist=numpy>=1.16.5 parent=pandas
2021-06-09 11:01:22 [info ] init johnnydist [johnnydep.lib] dist=python-dateutil>=2.7.3 parent=pandas
2021-06-09 11:01:23 [info ] init johnnydist [johnnydep.lib] dist=pytz>=2017.3 parent=pandas
2021-06-09 11:01:23 [info ] init johnnydist [johnnydep.lib] dist=six>=1.5 parent=python-dateutil>=2.7.3
name summary
-------------------------- -----------------------------------------------------------------------
pandas Powerful data structures for data analysis, time series, and statistics
├── numpy>=1.16.5 NumPy is the fundamental package for array computing with Python.
├── python-dateutil>=2.7.3 Extensions to the standard Python datetime module
│ └── six>=1.5 Python 2 and 3 compatibility utilities
└── pytz>=2017.3 World timezone definitions, modern and historical
これらの答えは時代遅れであり、今より良い解決策があると思います。ここに元の投稿:
またはにrequirements.txt
リストされているパッケージinstall_requires
を生成するには、をインストールする必要があります。setup.cfg
setup.py
pip-tools
pip install pip-tools
pip-compile
forおよび:requirements.txt
で指定されたパッケージを含むファイルを生成するにはextras_requires
tests
dev
pip-compile --extra tests --extra devrequirements.txt file with packages listed under
さらに、またはrequirements.in
の代わりにファイルを使用して、要件を一覧表示することもできます。setup.cfg
setup.py
pip-compile requirements.in
johnnydep
CLIの代わりにPythonから呼び出す方法に関する単なる補遺:
import sys, johnnydep.cli
sys.argv = ["", "pandas"]
johnnydep.cli.main()
@radtekのコメントに記載されているように、このコマンドpip install <package> --download <path>
を使用する必要があります。7.0.0(2015-05-21)以降、-no-installがから削除さpip
れているためです。これにより、必要な依存関係がにダウンロードされ<path>
ます。
もう1つのオプションは、 APIを使用してファイルを解析し、置換を使用してファイルを解析する、これと同様のヘルパースクリプトを使用することです。pip.req.parse_requirements
requirements.txt
distutils.core.setup
setup.py