将“导入”名称映射到PyPI名称?

时间:2018-10-09 14:09:13

标签: python

这适用于pydeps --externalshttps://github.com/thebjorn/pydeps)上的工作,其中列出了模块导入的外部软件包,例如:

c:\github\pydeps> pydeps --externals pydeps
[
    "configparser",
    "enum",
    "stdlib_list",
    "yaml"
]

意味着这四个模块是唯一需要安装的依赖软件包的导入(*)。这可以例如被输入创建(或检查)requirements.txt文件的文件中。

我意识到这四行都存在问题,但是这个问题与最后两个(stdlib_listyaml)有关,它们来自名为stdlib-list和{{ 1}}。

IIUC无法从模块名称中找到软件包名称,即使已安装依赖项也是如此。这仍然正确吗?

我找到了PyYAML,但似乎我不能相信它总是存在的文件(https://www.python.org/dev/peps/pep-0427/#the-dist-info-directory)。这样就可以在site-packages/*.dist-info/top_level.txt中搜索site-packages/*.dist-info/RECORD,是否存在用于访问此信息的现有API? <importname>/__init__.pyc?看起来很有前途,但没有:

pkginfo

另一个选择是保留模块/导入名称->包/ pip安装名称的较大映射。我看到其他人有这个想法,例如https://github.com/bndr/pipreqs/blob/master/pipreqs/mapping,但是还有更正式的方式(或pypi包?)

(*)我没有找到import pkginfo, stdlib_list print pkginfo.Installed(yaml).package_name # print "yaml" 版的“事物”的任何唯一且一致使用的名称。我尝试将“事物”称为程序包,并将其导入为 modules 的“事物”-我确信这是有争议的;-)

0 个答案:

没有答案