这是工作用的
pydeps --externals
https://github.com/thebjorn/pydeps
)其中列出了模块导入的外部包,例如:
c:\github\pydeps> pydeps --externals pydeps
[
"configparser",
"enum",
"stdlib_list",
"yaml"
]
requirements.txt
文件。
我知道这四条线都有问题,但这个问题与最后两条线有关(
stdlib_list
yaml
)来自名为
stdlib-list
和
PyYAML
分别是。
IIUC无法从模块名中找到包名,即使已安装依赖项。这仍然正确吗?
我发现了
site-packages/*.dist-info/top_level.txt
https://www.python.org/dev/peps/pep-0427/#the-dist-info-directory
). 剩下的就是寻找
site-packages/*.dist-info/RECORD
<importname>/__init__.pyc?
是否有访问此信息的现有API?
pkginfo
看起来很有希望,但不是:
import pkginfo, stdlib_list
print pkginfo.Installed(yaml).package_name # print "yaml"
另一个选项是保留module/import name->package/pip install name的大型映射。我看到其他人有这个想法,例如。
https://github.com/bndr/pipreqs/blob/master/pipreqs/mapping
(*)我还没有发现“事物”的任何唯一且一致使用的名称,即
pip install
包裹
模块
--我相信这是有争议的;-)