获取python项目使用的所有模块/包

新手上路,请多包涵

我有一个 python GUI 应用程序。现在我需要知道应用程序链接到的所有库。这样我就可以检查所有库的许可证兼容性。

我尝试过使用 strace,但 strace 似乎报告了所有的包,即使它们没有被应用程序使用。

而且,我尝试了 python ModuleFinder,但它只返回 python2.7 内部的模块,而不是链接的系统级包。

那么有什么方法可以获取从我的应用程序链接的所有库?

原文由 user2109788 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 690
1 个回答

您可以尝试在指南 https://www.fullstackpython.com/application-dependencies.html 之后找到的库 https://github.com/bndr/pipreqs


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

我有同样的问题,这个图书馆为我解决了这个问题。不确定它是否适用于多层依赖关系,即如果您有嵌套级别的依赖库。

-- 编辑 1:

如果寻找更复杂的 版本管理器,请考虑 pyvenv https://github.com/pyenv/pyenv 。它包装了 virtualenvpipreqs 创建的版本规范进行了一些改进。

-- 编辑 2:

如果在使用 pipreqs 使用模块的依赖库创建文件后,您想固定整个依赖树,请查看 pip-compile 。它找到了一种获取顶级库依赖关系的方法,并将它们固定在新的需求文件中,指示依赖关系树。

-- 编辑 2:

如果你想将你的依赖树拆分成不同的文件(例如 base、test、dev、docs)并有办法管理依赖树,请查看 pip-compile-multi

原文由 SeF 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题