python - 如何正确创建 pyinstaller Hook ,或者隐藏导入?

标签 python pyinstaller

我有两个包(例如,datareaddatainspector),PyInstaller 未检测到它们。因此,当运行的应用程序到达需要从这些包中导入模块的位置时,应用程序将终止。

最简单的解决方案是将 datareaddatainspector 复制到打包的应用程序中。但这将打破打包应用程序二进制版本的意图。

我看过 highded imports 和 hook,我认为两者都可以解决问题,但我不确定该使用哪个。

有什么建议吗? PS:这两个包都可能包含嵌套目录。

最佳答案

Hook 是在 PyInstaller 找到导入语句时指定额外操作的文件。

如果您添加一个 hook-data.py 文件,其中包含一行 hiddenimports = ['_proxy', 'utils', 'defs'],PyInstaller 将检查它会在看到 import data 时查找其他导入。

您必须通过 --additional-hooks-dir 指定 Hook 目录的路径(如果您不想将源代码与仅编译文件混合,这很有用,并且而不是将它们放在单独的目录中)。

更简单的解决方案是使用 --hidden-import=modulename 和 PyInstaller 脚本。它会以静默方式添加 modulename 作为 import 语句。

如果您想指定哪个导入需要哪些附加模块,则 Hook 会更好。 --hidden-import 作为一次性或用于调试更简单。

更多信息 - https://pyinstaller.readthedocs.io/en/stable/hooks.html

关于python - 如何正确创建 pyinstaller Hook ,或者隐藏导入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27947639/

相关文章:

python - 使用python执行shell邮件命令

python - 如何组合两个嵌套元组并在 Django 的 CharField 选择中使用?

python - matplotlib 中的堆栈条形图并为每个部分添加标签

python - 使用 PyInstaller 时出错

python - 如何更改 python 版本以与 pyinstaller 一起使用

python - 处理基于其他字段的 Django 模型字段的要求

python - 分解多行中具有密集向量的列

python - 如何从 .py 文件创建需要在单独文件夹中读取和写入 .txt 文件的 python 可执行文件

python-3.x - PyInstaller: FileNotFoundError: [Errno 2] 没有那个文件或目录

python - 如何解决ModuleNotFoundError : No module named 'openpyxl.cell._writer' ?