PyInstaller打包单文件EXE后跨机运行报错:尝试访问不存在的_MEI临时文件夹
PyInstaller打包单文件EXE后跨机运行报错:尝试访问不存在的_MEI临时文件夹
嗨,我看你遇到了PyInstaller打包单文件EXE后的棘手问题——明明打包过程看起来一切正常,必要的.dll文件也被包含了,临时文件夹也能正常解压,但到其他电脑上运行时,程序却会试图访问一个不存在的_MEI开头临时文件夹,最终报错加载python39.dll失败对吧?
先把你提到的可复现步骤整理出来,方便参考:
- 用Python 3.9新建一个极简项目(比如用PyCharm),代码就一行:
print("HI") - 在CMD里执行打包命令,生成单文件EXE:
pyinstaller main.py -F - 将生成的EXE复制到另一台电脑,用CMD运行,会收到类似这样的错误:
Error loading Python DLL: "path to local\Temp_MEIXXXX\python39.dll
你还提到自己尝试过用--runtime-tmpdir .参数指定临时文件夹位置(命令如下),但发现没法手动设置_MEI开头的临时文件夹名称——确实,目前PyInstaller没有提供手动指定这个临时文件夹名称的选项:
pyinstaller script.py --add-data "PATH TO DLL\python39.dll;test" -F --runtime-tmpdir .
问题原因分析
这种情况大概率是你的PyInstaller或者Python本身的安装出现了损坏——虽然打包时表面正常,必要文件也被打包进去了,但安装损坏导致打包过程中某些路径逻辑出现异常,最终导致运行时临时文件夹的名称和程序期望的不匹配。
解决方案建议
最直接有效的办法就是彻底卸载当前的PyInstaller和Python,然后重新进行一次干净的安装,再尝试打包运行。
备注:内容来源于stack exchange,提问作者Frederik A.




