使用PyInstaller打包时报错No module named 'pyWinhook'如何解决?
PyInstaller打包触发pyWinhook ModuleNotFoundError的通用规范解决方案
该报错核心原因是pyWinhook依赖SWIG生成的底层绑定文件,PyInstaller的自动依赖检索逻辑无法识别这类非Python直接导入的二进制资源,因此单独配置hidden-import无效。以下是几种通用规范方案,无需手动修改Python源码目录文件:
使用预编译的pyWinhook安装包
放弃默认pip install pyWinhook的安装方式,下载和你Python版本、系统架构匹配的预编译whl包本地安装,预编译包已经内置了完整的SWIG生成绑定文件,安装完成后直接重新打包即可解决问题。打包时显式添加二进制依赖
通过PyInstaller的--add-binary参数直接指定pyWinhook目录下的绑定文件路径,无需修改系统文件。Windows环境下打包命令示例:pyinstaller --add-binary "%PYTHONPATH%\Lib\site-packages\pyWinhook\_cpyWinhook.pyd;." ScreenShot.py把命令中的
%PYTHONPATH%替换为你本地Python的安装路径即可,PyInstaller会自动将该二进制依赖打包到最终程序目录中。通过spec配置文件固化依赖规则
首次打包时生成spec配置文件,在配置的Analysis区块的binaries字段中添加pyWinhook绑定文件的路径配置,后续打包直接指定spec文件即可,不需要每次手动输入长命令,适合多次迭代打包的项目。
内容的提问来源于stack exchange,提问作者Sigmund Volden
相关产品推荐
相关产品推荐

