Скажите, что пакет 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
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
флаг.
modulefinder из стандартной библиотеки
Новое в версии 2.3.
Этот модуль предоставляет ModuleFinder класс, который может быть использован для определения набор модулей, импортируемых скриптом. modulefinder.py также может быть запустить как сценарий, указав имя файла скрипта Python в качестве аргумента, после чего будет выведен отчет об импортированных модулей будет напечатан.
Я не уверен, что это соответствует вашему требованию не загружать модули. Отсюда:
modulefinder использует проверку байткода для поиска зависимостей, и поэтому свободен от любых побочных эффектов, которые могут быть вызванные импортом изучаемых модулей исследуемых.
Другие советы по использованию pylint или Gui2exe здесь