列表python包依赖没有加载它们?

说python包A需要B,C和D; 有没有方法列出A→BCD而不加载它们?
Requires在元数据( yolk -MA )往往是不完整的, yolk -MA
可以下载A.tar / A.egg,然后查看A / setup.py,但其中一些很漂亮。

(我曾经想过,至less可以实现一级依赖关系,即使是98%的解决scheme也比下载雪崩更好。)

一个相关的问题: 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 

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

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

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

来自标准库的模块化器

2.3版本中的新function

此模块提供了一个ModuleFinder类,可用于确定由脚本导入的一组模块。 modulefinder.py也可以作为一个脚本运行,给出一个Python脚本的文件名作为它的参数,之后将打印导入模块的报告。

我不确定它是否符合您的要求,不加载模块。 从这里 :

模块检测器使用字节码检查来查找依赖关系,因此没有任何可能由导入正在研究的模块导致的副作用。

其他有关在这里使用pylint或Gui2exe的提示

如果通过软件包,你的意思是一个pip安装的软件包(而不是一个带__init__.py的目录),那么你可以使用叫做pip的Python软件包。 例如:

 def get_all_package_dependencies(): """Return dictionary of installed packages to list of package dependencies.""" return { dist.key: [r.key for r in dist.requires()] for dist in pip.get_installed_distributions() }