【问题标题】:PyInstaller what are hiddenimports and hooks?PyInstaller 什么是 hiddenimports 和 hooks?
【发布时间】:2013-03-05 16:56:27
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: python exe pyinstaller


    【解决方案1】:

    来自pyinstaller documentation

    隐藏进口

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

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

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

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

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

    【讨论】:

    • 我仍然不确定如何使用这些东西,但我相信根据这些信息,我可以进行更多实验,并希望朝着正确的方向前进。谢谢奥斯汀。
    • 应该只是项目中的几个例子来说明 hiddenimports 如何帮助用户。
    猜你喜欢
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 2020-01-21
    • 2022-10-05
    • 2019-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多