我正在尝试创建一个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开关,但没有区别。
由于
答案 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])$"