PyInstaller生成的EXE提示找不到奇怪名称模块'3c22db458360489351e4__mypyc'的解决求助
看起来你遇到的是PyInstaller处理mypyc编译模块的典型问题——那个带哈希值的奇怪模块名3c22db458360489351e4__mypyc,其实是用mypyc编译后的Python模块的内部命名,PyInstaller没能自动识别并打包这个依赖。结合你的情况,给你几个可行的解决办法:
更换为纯Python版本的tomli库
你当前安装的tomli可能是mypyc编译的二进制版本(可以通过pip list查看,版本号会带+mypyc后缀)。PyInstaller对这类编译后的模块支持不够完善,你可以卸载当前版本后安装纯Python版:pip uninstall tomli -y pip install tomli --no-binary :all:安装完成后重新用PyInstaller打包,应该能避免这个奇怪的模块依赖问题。
手动添加哈希命名模块到hiddenimports
如果不想更换tomli版本,直接把报错里的那个奇怪模块名加入spec文件的hiddenimports列表:hiddenimports=['tomli', '3c22db458360489351e4__mypyc'],保存spec文件后,重新执行
pyinstaller your_spec_file.spec打包,让PyInstaller强制打包这个模块。调整PyInstaller打包参数
试试修改spec文件里的两个参数,看是否能解决加载问题:- 将
optimize=0改为optimize=-1(禁用优化,避免编译模块的加载冲突) - 将
noarchive=False改为noarchive=True(不把模块打包成单个归档文件,可能解决模块路径识别问题)
修改后重新打包测试。
- 将
升级/降级PyInstaller版本
你当前用的是PyInstaller 6.8.0,这个版本可能存在处理mypyc编译模块的bug。可以尝试升级到最新稳定版:pip install --upgrade pyinstaller如果升级后问题依旧,也可以降级到之前的稳定版本(比如6.7.0)再试:
pip install pyinstaller==6.7.0
这些方法应该能解决你遇到的模块找不到问题,建议先从第一个方法开始尝试,更换纯Python版的tomli是最直接的解决方案。
备注:内容来源于stack exchange,提问作者Psionman

