使用auto-py-to-exe打包PyQt5项目时出现plotting.ui找不到异常
解决PyQt5项目打包exe后找不到plotting.ui的问题
问题原因
- 加载UI文件时未使用绝对路径,打包后exe运行的工作目录与原脚本目录不一致,导致无法找到相对路径下的ui文件。
- auto-py-to-exe打包时未将ui文件、images等资源文件一同打包进exe或输出目录。
- 代码与错误提示存在拼写差异:错误提示找不到
plotting.ui,但代码里写的是ploting.ui,需确认实际文件名是否一致。
修复步骤
1. 修正代码中的UI加载路径
利用已获取的scriptDir拼接绝对路径,替换原相对路径加载方式:
# 原代码 # uic.loadUi('ploting.ui',self) # 修改为 uic.loadUi(os.path.join(scriptDir, 'ploting.ui'), self)
这样无论程序在哪个目录运行,都能精准定位到UI文件。
2. 配置auto-py-to-exe包含资源文件
打开auto-py-to-exe,在**"Additional Files"**区域操作:
- 点击
Add Files,选择你的ploting.ui文件(注意匹配实际文件名) - 点击
Add Folder,选择images文件夹 - 确保输出目录中会同步复制这些资源文件。
3. 可选:将UI文件转为Python代码(消除外部依赖)
如果不想打包外部资源文件,可使用pyuic5工具将ui文件转为Python代码:
打开命令行,进入UI文件所在目录执行:
pyuic5 ploting.ui -o ploting_ui.py
然后在原脚本中替换加载逻辑:
# 替换from PyQt5 import uic from ploting_ui import Ui_MainWindow # 类名以实际生成的代码为准 class graph_kf_data(QMainWindow) : def __init__(self): super(graph_kf_data, self).__init__() # 替换uic.loadUi self.ui = Ui_MainWindow() self.ui.setupUi(self) # 后续控件引用改为self.ui.comboBox、self.ui.frame_4等格式
这种方式彻底消除对外部UI文件的依赖,打包更简洁。
内容的提问来源于stack exchange,提问作者youcef
相关产品推荐
相关产品推荐

