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

问题描述 投票:22回答:2

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

我尝试使用strace,但是strace似乎报告了所有软件包,即使应用程序未使用它们。

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

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

python linux pyinstaller strace
2个回答
46
投票

您可以尝试图书馆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命令兼容:如果您需要创建项目的虚拟版本,或者使用兼容的库更新当前的python版本,则只需键入:

pip install -r requirements.txt

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

-编辑-更新:

如果要寻找更高级的版本管理器,请同时考虑pyvenv https://github.com/pyenv/pyenv。它在同一工具中融合了virtualenvpipreqs,并且对pipreqs的版本规范进行了一些改进。


0
投票

用以下方法安装蛋黄:

pip install yolk

致电以下内容以获取您环境中的鸡蛋清单:

yolk -l

或者,您可以使用snakefood来绘制依赖关系的图形,如this question中的回答。

您可以尝试进入存储未包装鸡蛋的site-packages文件夹,然后运行此文件:

ls -l */LICENSE*

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


0
投票

由于编码原因而失败:

P:\>pipreqs --encoding cp1251 /app > x

Traceback (most recent call last):
  File "i:\python37\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "i:\python37\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "I:\Python37\Scripts\pipreqs.exe\__main__.py", line 9, in <module>
  File "i:\python37\lib\site-packages\pipreqs\pipreqs.py", line 470, in main
    init(args)
  File "i:\python37\lib\site-packages\pipreqs\pipreqs.py", line 409, in init
    follow_links=follow_links)
  File "i:\python37\lib\site-packages\pipreqs\pipreqs.py", line 122, in get_all_imports
    contents = f.read()
  File "i:\python37\lib\encodings\cp1251.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 955: character maps to <undefined>

与其他选项相同,没有任何其他选项。没有帮助:

P:\>pipreqs --encoding utf8 /app > x
P:\>pipreqs /app > x

项目效果很好。

© www.soinside.com 2019 - 2024. All rights reserved.