我有一个python GUI应用程序。现在我需要知道应用程序链接到的所有库。这样我就可以检查所有库的许可证兼容性。
我尝试过使用strace,但是strace似乎报告了所有的包,即使它们没有被应用程序使用。
并且,我尝试了python ModuleFinder,但它只返回python2.7中的模块而不是链接的系统级包。
那么有什么方法可以获得从我的应用程序链接的所有库吗?
答案 0 :(得分:32)
您可以尝试使用该库 https://github.com/bndr/pipreqs 按照指南找到 https://www.fullstackpython.com/application-dependencies.html
库pipreqs是pip可安装的,并自动生成文件requirements.txt。它包含所有导入库,其中包含您在virtualenv或正确安装的python中使用的版本。
只需输入:
pip install pipreqs
pipreqs /home/project/location
它将打印:
INFO: Successfully saved requirements file in /home/project/location/requirements.txt
此外,它与 pip install -r 命令兼容:如果您需要创建项目的venv,或者使用兼容库更新当前的python版本,则只需键入:
pip install -r requirements.txt
我遇到了同样的问题,这个库为我解决了这个问题。不确定它是否适用于多层依赖项,即如果你有嵌套级别的依赖库。
- 编辑 - 更新:
如果要寻找更复杂的版本管理器,请考虑pyvenv https://github.com/pyenv/pyenv。它将virtualenv
和pipreqs
混合在同一工具中,对pipreqs
的版本规范进行了一些改进。
答案 1 :(得分:0)
使用以下命令安装yolk:
pip install yolk
请致电以下内容以获取您环境中的鸡蛋列表:
yolk -l
或者,您可以使用snakefood来绘制依赖关系图,如this question中所述。
您可以尝试进入存储解压缩鸡蛋的site-packages文件夹,然后运行:
ls -l */LICENSE*
这将为您提供每个项目的许可证文件列表(如果它们存储在鸡蛋的根目录中,它们通常是这样的。)