我有一个 python GUI 应用程序。现在我需要知道应用程序链接到的所有库。这样我就可以检查所有库的许可证兼容性。
我尝试过使用 strace,但 strace 似乎报告了所有的包,即使它们没有被应用程序使用。
而且,我尝试了 python ModuleFinder,但它只返回 python2.7 内部的模块,而不是链接的系统级包。
那么有什么方法可以获取从我的应用程序链接的所有库?
原文由 user2109788 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个 python GUI 应用程序。现在我需要知道应用程序链接到的所有库。这样我就可以检查所有库的许可证兼容性。
我尝试过使用 strace,但 strace 似乎报告了所有的包,即使它们没有被应用程序使用。
而且,我尝试了 python ModuleFinder,但它只返回 python2.7 内部的模块,而不是链接的系统级包。
那么有什么方法可以获取从我的应用程序链接的所有库?
原文由 user2109788 发布,翻译遵循 CC BY-SA 4.0 许可协议
7 回答5.3k 阅读
4 回答4.4k 阅读✓ 已解决
4 回答4k 阅读
4 回答3.8k 阅读✓ 已解决
2 回答5.9k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
您可以尝试在指南 https://www.fullstackpython.com/application-dependencies.html 之后找到的库 https://github.com/bndr/pipreqs
库
pipreqs
可通过 pip 安装并自动生成文件requirements.txt
。它包含您在 virtualenv 或正确安装的 python 中使用的版本的所有导入库。只需输入:
它将打印:
此外,它与 pip install -r 命令兼容:如果您需要创建项目的 venv,或者使用兼容的库更新当前的 python 版本,您只需键入:
我有同样的问题,这个图书馆为我解决了这个问题。不确定它是否适用于多层依赖关系,即如果您有嵌套级别的依赖库。
-- 编辑 1:
如果寻找更复杂的 版本管理器,请考虑 pyvenv https://github.com/pyenv/pyenv 。它包装了
virtualenv
对pipreqs
创建的版本规范进行了一些改进。-- 编辑 2:
如果在使用
pipreqs
使用模块的依赖库创建文件后,您想固定整个依赖树,请查看pip-compile
。它找到了一种获取顶级库依赖关系的方法,并将它们固定在新的需求文件中,指示依赖关系树。-- 编辑 2:
如果你想将你的依赖树拆分成不同的文件(例如 base、test、dev、docs)并有办法管理依赖树,请查看
pip-compile-multi
。