gpt4 book ai didi

python - PyInstaller 什么是隐藏导入和 Hook ?

转载 作者:太空狗 更新时间:2023-10-30 01:55:07 28 4
gpt4 key购买 nike

我最近尝试了 pyInstaller,但有些东西我不太明白。我一直在尝试创建一些可执行文件(注意:它们都使用 numpy、scipy、OpenCV、BLAS 等),但我一直在失败。总是缺少一些东西。所以我的问题是,有人可以向我更好地解释什么是 hiddenimports 和 hooks,以及我如何告诉 pyInstaller 我的代码中所有依赖项的目录,以便它可以打包到最终的可执行文件中。

谢谢。

最佳答案

来自pyinstaller documentation

hiddenimports

A list of modules names (relative or absolute) the module imports in some untrackable way.

在对程序进行静态分析期间,某些 Python 导入是无法跟踪的。例如,您的代码可能会使用 Python 代码创建要导入的模块的名称,然后导入该模块。在这种情况下,pyinstaller 在其代码分析期间将无法计算出要导入的模块的名称是什么。如果您提前知道,那么您可以告诉 pyinstaller 无条件地包含这些模块。

Hook 是一种捆绑一组隐藏导入和其他参数以查找模块的方法。钩子(Hook)被命名为 hook-<module>.py其中 module 是完全限定的模块名称。例如 hook-xml.dom.py .如果您的代码执行import xml.dom , 然后读取钩子(Hook)脚本的内容以包括特定于 xml.dom 的任何隐藏导入.

如果您创建自己的模块并且它需要隐藏导入,您可以使用适当的隐藏导入设置创建一个 Hook 脚本并将其存储在 PyInstaller Hook 目录中。下次您使用 PyInstaller 卡住导入您的模块的程序时,它会自动找到您的 Hook 文件并拉入所需的隐藏导入,而您不必每次都记住模块的隐藏导入是什么。

文档提供了有关所有这些工作原理的更多信息,但希望这能提供更多背景信息。

关于python - PyInstaller 什么是隐藏导入和 Hook ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15229658/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com