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

时间:2016-03-04 13:11:06

标签: python linux pyinstaller strace

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

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

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

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

2 个答案:

答案 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。它将virtualenvpipreqs混合在同一工具中,对pipreqs的版本规范进行了一些改进。

答案 1 :(得分:0)

使用以下命令安装yolk:

pip install yolk

请致电以下内容以获取您环境中的鸡蛋列表:

yolk -l

或者,您可以使用snakefood来绘制依赖关系图,如this question中所述。

您可以尝试进入存储解压缩鸡蛋的site-packages文件夹,然后运行:

ls -l */LICENSE*

这将为您提供每个项目的许可证文件列表(如果它们存储在鸡蛋的根目录中,它们通常是这样的。)