在打包程序的时候遇到一大堆报错,查了许久的资料,终于解决.现在整理一下备查.
注:以下内容均来自谷歌,由笔者整理
- enum.IntFlag
使用pyinstaller编译程序时出现以下错误
1 | ... |
出现原因: 与tensorflow的enum34库冲突,卸载即可,在需要时再重装
解决办法:
1 | pip uninstall enum34 |
- vcruntime140.dll
运行程序时出现vcruntime140.dll与系统不兼容的错误
解决办法:关闭upx,在指令中添加如下语句
1 | --noupx |
- pyttsx3
这是问题最多的地方
编译使用了pyttsx3的程序后,运行会出现如下错误
1 | ModuleNotFoundError: No module named 'pyttsx3.drivers' |
解决办法:
在被编译的程序的目录下(理论上任何目录都行)新建目录并新建文件“hook-pyttsx3.py”
(我这里新建“hooks\hook-pyttsx3.py”)
内容如下:
1 | #----------------------------------------------------------------------------- |
再在命令行中添加如下参数:
(我在被编译程序根目录执行的pyinstaller,所以用的相对路径“hooks”)
1 | --additional-hooks-dir hooks |
此时再编译运行出现错误:
1 | pywintypes.com_error: (-2147352573, '找不到成员。', None, None) |
解决办法:
修改文件“<python路径>\Lib\site-packages\PyInstaller\loader\rthooks\pyi_rth_win32comgenpy.py”
(请先阅读后续部分再进行操作)
最终效果:
1 | #----------------------------------------------------------------------------- |
即在最前面添加版本判断,若python版本大于等于3.0,则不进行处理。后续pyinstaller可能会对该文件进行修改,不建议直接复制,手动添加如下内容即可:
1 | import sys |