列出python包依赖项而不加载它们?

2022-01-15 00:00:00 python packaging dependencies

问题描述

说python包A需要B、C和D;有没有办法列出 A →B C D 不加载它们?
元数据中的 Requires (yolk -M A) 通常不完整,grr.
可以下载A.tar/A.egg,然后查看A/setup.py,但其中一些非常血腥.

Say that python package A requires B, C and D; is there a way to list A → B C D without loading them ?
Requires in the metadata (yolk -M A) are often incomplete, grr.
One can download A.tar / A.egg, then look through A/setup.py, but some of those are pretty gory.

(我认为至少获得第一级依赖项可以机械化;即使是 98% 的解决方案也比雪崩式下载要好.)

(I'd have thought that getting at least first-level dependencies could be mechanized; even a 98 % solution would be better than avalanching downloads.)

一个相关的问题:pip-upgrade-package-without-upgrading-dependencies


解决方案

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

要从标准库中过滤掉模块,您可以使用

To filter out modules from the standard library, you could use

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

正如您已经注意到的,如果您想忽略其他目录,您也可以使用 sfood -I 标志.

As you've already noted, if there are other directories you'd like ignored, you can also use the sfood -I flag.

相关文章