经常会出现单个python文件或整个项目,我需要确定要导入的模块-主要是出于许可证清除的目的。
如何以尽可能完整的方式执行此操作?我知道pipreqs工具,但它似乎以某种方式并未在最终报告中列出所有模块,尽管它似乎可以识别所有模块->根据调试日志。
我可以花时间去开发工具,这很好-因此,有关如何执行此操作的策略将非常有用。
谢谢
答案 0 :(得分:0)
如果您仅对依赖项的许可证感兴趣,这是一种解决方案:
如果您可以访问一个项目,我认为必须有requirements.txt
,Pipfile,pyproject.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
文件中公开。因此,我必须访问项目页面本身才能获得许可证。