列表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() }