这是用于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,但是有没有更正式的方法(或者pypi包?)你知道吗
(*)我还没有找到任何唯一的和一致使用的名称来表示pip install
-ed的“thing”。我尝试将该“thing”称为包,以及为模块导入的“things”--我确信这是有争议的;-)
目前没有回答
相关问题 更多 >
编程相关推荐