Как перечислить зависимости для библиотеки python без установки?
Есть ли способ получить список зависимостей для данного пакета python без его предварительной установки?
В настоящее время я могу получить список требований, но он требует установки пакетов. Например, я могу использовать pip для отображения информации об основных требованиях, но она не включает информацию о версии:
$ pip show pytest
Name: pytest
Version: 3.0.6
...
Requires: colorama, setuptools, py
Я попробовал библиотеку под названием pipdeptree
это включает в себя гораздо лучшую производительность по требованиям, но также требует установки пакеты
$ pipdeptree -p pytest
pytest==3.0.6
- colorama [required: Any, installed: 0.3.7]
- py [required: >=1.4.29, installed: 1.4.32]
- setuptools [required: Any, installed: 34.0.0]
- appdirs [required: >=1.4.0, installed: 1.4.0]
...
В идеале я бы получил тот уровень детализации, который обеспечивает pipdeptree
. Также было бы достаточно иметь возможность создавать файл requirements.txt
из python wheel
или из pypi с pip
.
Правка:
Я рассматривал аналогичные вопросы. Они либо устарели, требуют установки, либо не содержат спискаотдельных зависимостей для данного пакета, а только список последних загруженных пакетов после разрешения требований к зависимостям. Для например, мне на самом деле все равно, что pip скачал package-2.3.4
, я бы предпочел знать, что package>=2.1
было требованием.
3 ответа:
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