Как программно получить список зависимостей пакета Python?
В стандарте setup.py
они задокументированы, но я не могу найти простой способ получить к нему доступ ни из Python, ни из командной строки.
В идеале я ищу что-то вроде:
$ pip install somepackage --only-list-deps
kombu>=3.0.8
billiard>=3.3.0.13
boto>=2.26
или:
>>> import package_deps
>>> package = package_deps.find('somepackage')
>>> print package.dependencies
['kombu>=3.0.8', 'billiard>=3.3.0.13', 'boto>=2.26']
Обратите внимание, я не говорю об импорте пакета и поиске всех модулей, на которые есть ссылки. Хотя он может найти большинство зависимых пакетов, он не сможет найти требуемый минимальный номер версии. Это хранится только в setup.py.
Ответы:
Помимо
pip show [package name]
команды естьpipdeptree
.Просто сделать
затем беги
и он покажет вам ваши зависимости в виде дерева, например,
Проект находится по адресу https://github.com/naiquevin/pipdeptree , где вы также найдете информацию об использовании.
источник
pipdeptree
показать зависимости всех установленных пакетов, а не только для данного пакета. Хотя вы можете фильтровать его--json
вывод, он по-прежнему зависит от уже установленных пакетов.requirements.txt
:)-p
опцию, чтобы выбрать только несколько пакетов, зависимости которых вы хотите изучить.pipdeptree
был очень полезным при оптимизацииrequirements.txt
.$ pipdeptree | grep -P '^\w+'
Это выводит только пакеты верхнего уровня. Подробнее здесьПопробуйте использовать
show
командуpip
, например:Обновить (получить данные с указанной версией):
источник
Requires
раздел$ pip3 show beautifulsoup4
показывает пустоRequires:
- beautifulsoup4 ни от чего не зависит?beautifulsoup4
.Довольно много ответов здесь показывают, что pip импортируется для использования в программах. Документация пип сильно отговаривает от этого использования ПУМ .
Вместо доступа
pkg_resources
через импорт pip вы можете просто импортироватьpkg_resources
напрямую и использовать ту же логику (что на самом деле является одним из предлагаемых решений в связанных документах pip для всех, кто хочет программно просматривать метаинформацию пакета).Если у вас возникли проблемы с точным определением имени вашего пакета,
WorkingSet
экземпляр, возвращаемый функцией,pkg_resources.working_set
реализует__iter__
вы можете распечатать их все и, надеюсь, найти там свой :)т.е.
Это работает как с python 2, так и с 3 (хотя вам нужно настроить операторы печати для python2)
источник
(ЭТО УСТАРЕВШИЙ ОТВЕТ, СЛЕДУЕТ ИЗБЕГАТЬ ДЛЯ СОВРЕМЕННЫХ ВЕРСИЙ PIP И ОСТАВЛЯЙТЕСЬ ЗДЕСЬ ДЛЯ СМОТРЕНИЯ НА СТАРЫЕ ВЕРСИИ PIP) Ответ Алекс хороший (+1). В питоне:
должен вернуть что-то вроде
где twisted - название пакета, которое вы можете найти в словаре:
чтобы перечислить их все:
должен дать вам такие списки:
источник
_vendor
Атрибут , кажется, не существует в пип версии19.1.1
(Edit: Хорошо, это , кажется, переехал вpkg_resources
пакет в последней версии питона!)pip show
часть, а не все остальное). Либо использоватьpip show
, pipdeptree или увидеть ответ Jordan Mackie, используя Setuptools 'pkg_resources
непосредственно.Используйте https://libraries.io/ . Это хорошее место для изучения зависимостей перед установкой с помощью pip.
Например. Введите google-cloud-storage и выполните поиск, после чего вы сможете найти страницу библиотеки ( https://libraries.io/rubygems/google-cloud-storage ). Выберите версию, для которой вы хотите изучить зависимости, из «Релизов» (по умолчанию - последняя версия). В «Зависимости» вы можете найти список зависимостей и их поддерживаемые версии.
источник
Попробуйте это в соответствии с этой статьей на Python:
Это будет выглядеть так:
источник