зависимости от пакета Python списка, не загружая их?

Скажите, что пакет Python A требует B, C и D; существует ли способ перечислить → B C D, не загружая их?
Requires в метаданных (yolk -M A) являются часто неполными, grr.
Можно загрузить A.tar / A.egg, затем просмотреть A/setup.py, но некоторые из тех довольно окровавлены.

(Я думал бы, что получение, по крайней мере, зависимостей первого уровня могло быть механизировано; даже 98%-е решение было бы лучше, чем формирование лавины загрузок.)

Связанный вопрос: pip-upgrade-package-without-upgrading-dependencies

22
задан Community 23 May 2017 в 12:25
поделиться

2 ответа

Snakefood

sfood -fuq package.py | sfood-target-files 

перечислит зависимости.

`-f` tells sfood to follow dependencies recursively
`-u` tells sfood to ignore unused imports
`-q` tells sfood to be quiet about debugging information

Чтобы отфильтровать модули из стандартной библиотеки, вы можете использовать

sfood -fuq package.py | sfood-filter-stdlib | sfood-target-files 

Как вы уже отметили, если есть другие каталоги, которые вы хотели бы игнорировать, вы также можете использовать sfood -I флаг.

29
ответ дан 29 November 2019 в 04:19
поделиться

modulefinder из стандартной библиотеки

Новое в версии 2.3.

Этот модуль предоставляет ModuleFinder класс, который может быть использован для определения набор модулей, импортируемых скриптом. modulefinder.py также может быть запустить как сценарий, указав имя файла скрипта Python в качестве аргумента, после чего будет выведен отчет об импортированных модулей будет напечатан.

Я не уверен, что это соответствует вашему требованию не загружать модули. Отсюда:

modulefinder использует проверку байткода для поиска зависимостей, и поэтому свободен от любых побочных эффектов, которые могут быть вызванные импортом изучаемых модулей исследуемых.

Другие советы по использованию pylint или Gui2exe здесь

13
ответ дан 29 November 2019 в 04:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: