【发布时间】:2020-01-01 00:54:18
【问题描述】:
给定一个 PyPI 包名称,例如 PyYAML,如何以编程方式
确定可以导入的包(分发包)中可用的模块?
详情
我对@987654330@ 并不特别感兴趣,它只是一个流行的 PyPI 包的一个很好的例子,它有一个不同的
包名 (PyYAML)
来自它的主要模块名称 (yaml)
这样你就不能轻易从包名中猜出模块名。
我见过其他听起来像这样但不同的问题的答案,可能是因为命名冲突
我的问题是关于分发包和其中的模块之间的关系。
可能的解决方案空间
看起来可能富有成果的领域(但我还没有成功)是:
-
pydoc.help函数 (以helpbuilt-in浮出水面) 当调用help('modules')时,输出所有可用 模块的完整列表。这 显示尚未导入但可能导入的模块。它以人类可读的形式输出 到标准输出,我一直无法弄清楚thepydoccode 枚举模块。- 我可以想象调用这个,收集模块列表,将一个新的分发包安装到一个 virtualenv 中 以编程方式 pip,再次调用它并比较结果。
- 使用 pip 以编程方式安装分发包,以便
- 遍历 python 路径的元素以查找模块
【问题讨论】:
标签: python module setuptools pypi python-packaging