pyinstaller钩子从未调用过

时间:2015-05-21 10:09:26

标签: python hook pyinstaller

我正在尝试创建一个python程序的EXE。该程序非常复杂,无法在此处列出。我有一些用户定义的模块,halfwave,halfwave.utils和halfwave.db。我需要为这些模块创建一个钩子,所以我创建了文件hook-halfwave.py,hook-halfwave.db.py和halfwave.utils.py并放入一个名为hooks的文件夹。在程序中我导入模块

from halfwave import ...
from halfwave.utils import ...
from halfwave.db import ...

但是pyinstaller永远不会调用钩子文件。我已经尝试在spec文件的Analysis结构中设置hookspath并设置--additional-hooks-path开关。如果我将钩子文件放在pyinstaller钩子路径中,它们会被调用,但这不是一个好的选择。使pyinstaller调用钩子文件的技巧是什么?

编辑: 我运行的命令是

pyinstaller -y foo.spec

和.spec文件看起来像这样

a = Analysis(['.\\src\\testfoo.py'],
         pathex=['C:\\Data\\python\\testfoo'],
         hiddenimports=[],
         hookspath='.\\hooks\\',
         runtime_hooks=None)
pyz = PYZ(a.pure)
exe = EXE(pyz,
      a.scripts, ...

还尝试使用--additional-hooks-dir开关,但没有区别。

由于

1 个答案:

答案 0 :(得分:2)

我认为list参数应该是a = Analysis(['.\\src\\testfoo.py'], pathex=['C:\\Data\\python\\testfoo'], hiddenimports=[], hookspath=['.\\hooks\\'], runtime_hooks=None) pyz = PYZ(a.pure) exe = EXE(pyz, a.scripts, ... 个路径,如下所示:

"^(?:[1-9]\\d+|[2-9])$"