首页 > 解决方案 > pyinstaller 忽略挂钩文件中的隐藏导入

问题描述

我无法让 pyinstaller 使用挂钩文件正常工作。根据文档,以下设置应该可以工作,但事实并非如此。模块称为owl

钩猫头鹰.py:

hiddenimports=['pyodbc']

命令行:

pyinstaller --clean --win-private-assemblies --onefile --name=owl --additional-hooks-dir=.  service.py

我可以看到钩子文件被读取:

8704 INFO: Loading module hook "hook-xml.py"...
9193 INFO: Loading module hook "hook-owl.py"...
9219 INFO: Looking for ctypes DLLs

但规范文件不包含挂钩文件中指定的隐藏导入。

我知道我可以运行:

pyinstaller --clean --win-private-assemblies --onefile --name=owl --additional-hooks-dir=. --hidden-import=win32timezone --hidden-import=pyodbc service.py

它会生成正确的规范文件:

a = Analysis(['service.py'], pathex=['D:\\Python\\HooksTest'], binaries=[], datas=[],
             hiddenimports=['win32timezone', 'pyodbc'], hookspath=['.'], runtime_hooks=[],
             excludes=[], win_no_prefer_redirects=False, win_private_assemblies=True,
             cipher=block_cipher, noarchive=False)

但是当我使用挂钩文件时,它不能按预期工作。我需要让钩子为我们的 CI 构建工作。

标签: pythonpython-3.xpyinstaller

解决方案


推荐阅读