Python PyInstaller什么是hiddenimports和hook?

Python PyInstaller什么是hiddenimports和hook?,python,exe,pyinstaller,Python,Exe,Pyinstaller,我最近试过pyInstaller,但有些东西我不太明白。我一直在尝试创建一些可执行文件(注意:它们都使用numpy、scipy、OpenCV、BLAS等),但一直失败。总有一些东西不见了。所以我的问题是,有没有人能更好地向我解释什么是hiddenimport和hook,以及我如何告诉pyInstaller代码中所有依赖项的目录,以便它能够将这些文件打包到最终的可执行文件中 谢谢。来自 隐藏导入 A list of modules names (relative or absolute) the

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

谢谢。

来自

隐藏导入

A list of modules names (relative or absolute) the module imports in some untrackable way.
在程序的静态分析期间,某些Python导入是不可跟踪的。例如,您的代码可以使用Python代码创建要导入的模块的名称,然后导入该模块。在这种情况下,pyinstaller将无法在其代码分析期间计算出要导入的模块的名称。如果您提前知道,那么您可以告诉pyinstaller无条件地包含这些模块

钩子是一种捆绑一组隐藏导入和其他参数以查找模块的方法。钩子被命名为
hook-.py
,其中模块是一个完全限定的模块名。例如
hook xml.dom.py
。如果您的代码确实导入了xml.dom,那么钩子脚本的内容将被读取以包含特定于
xml.dom
的任何隐藏导入

如果您创建自己的模块,并且它需要隐藏导入,则可以使用适当的隐藏导入设置创建一个钩子脚本,并将其存储在PyInstaller hooks目录中。下次使用PyInstaller冻结导入模块的程序时,它将自动找到钩子文件并拉入所需的隐藏导入,而无需每次记住模块的隐藏导入内容


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

我仍然不确定如何使用这些东西,但我相信根据这些信息,我可以进行更多的实验,并希望朝着正确的方向前进。感谢Austin。项目中应该有几个例子来说明HiddeImport如何帮助用户。