如何识别python代码中的导入包

时间:2019-03-12 20:40:00

标签: python pip python-module

经常会出现单个python文件或整个项目,我需要确定要导入的模块-主要是出于许可证清除的目的。

如何以尽可能完整的方式执行此操作?我知道pipreqs工具,但它似乎以某种方式并未在最终报告中列出所有模块,尽管它似乎可以识别所有模块->根据调试日志。

我可以花时间去开发工具,这很好-因此,有关如何执行此操作的策略将非常有用。

谢谢

1 个答案:

答案 0 :(得分:0)

如果您仅对依赖项的许可证感兴趣,这是一种解决方案:

如果您可以访问一个项目,我认为必须有requirements.txtPipfilepyproject.toml (Poetry)之类的东西,其中包含所有必需的软件包。或者,您应该有权访问正在运行所有软件包的安装环境。

基于此假设,您可以使用pip-licenses来标识所有已安装依赖项的许可证。用法很简单:

$ pip install pip-licenses
$ pip-licenses --with-urls
Name    Version  License  URL
Django  2.0.2    BSD      https://www.djangoproject.com/
pytz    2017.3   MIT      http://pythonhosted.org/pytz

我经常遇到问题,该许可证未在setup.py文件中公开。因此,我必须访问项目页面本身才能获得许可证。