海狸 (@Beaver)记录一下PyInstaller + GUI 脚本执行踩坑全记录 中发帖

最近在做一个 PyInstaller 打包 + tkinter GUI 的项目,踩了不少坑,整理出来给佬们避雷。 

背景
项目结构大致是:GUI 主程序负责界面和交互,动态执行一个打包进去的 Python 脚本, 
脚本的 sys.stdout / sys.stderr 重定向到 GUI 的文本框。 
看起来简单,但联调过程中几乎每一个环节都出了幺蛾子。 

Q1 PermissionError / RuntimeError:无法获取脚本内容
现象:打包后运行报 PermissionError: Permission denied 或 
RuntimeError: 无法获取脚本内容。 
原因:PyInstaller onefile 模式下,_MEIPASS 是只读内存映射, 
用 open() 直接读取其中的文件会失败。 
解法:改用嵌入脚本方案,把脚本内容写成一个 Python 模块 
...
 
 
Back to Top