You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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.

火山引擎 最新活动