pyinstaller 没有读取我的挂钩文件并且无法使用 win32com.shell

pyinstaller not reading my hook file and doesn't work with win32com.shell

根据 pyinstaller 的文档,如果您将文件命名为 hook-fully.qualified.import.name.py,只要您导入匹配的 .py 文件,它就会读取该文件。

但是,我的脚本是这样的:

import pythoncom
from win32com.shell import shell
from win32com import storagecon
...

并且 pyinstaller 拒绝识别 win32com.shell,并出现以下错误:ImportError: No module named 'win32com.shell'。 所以我使用以下代码创建了 hook-win32com.shell.py

hiddenimports = [
    'win32com.shell.shell',
]

pyinstaller 从不读取此文件,但它确实读取 hook-win32com.py 所以我也尝试过将 `'win32com.shell' 添加到上面的挂钩文件中,但这并没有做太多。

  1. 如何让 pyinstaller 读取我的挂钩文件
  2. 如何让它包含 win32com.shell? (所以我在 .exe 的运行时摆脱了 "No module named")

这似乎是这样的:https://github.com/pyinstaller/pyinstaller/issues/1322

显然新的 python3 图现在在 pyinstaller 中随处使用,所以这个错误似乎也适用于 python2 用户。

我建议用 ctypes.shell32 或 cffi 重写 win32com.shell 调用。