Python+PyQt5项目打包的可执行文件无法加载图片资源

时间:2024-03-11 08:37:22

最近领导要求写一个测试小工具,将测试过程中的小工具收录在一起,方便后续调试、测试、装机检测等环境使用;

Pytho+PyQt5打包过程:

===========================

一、Python+PyQt5开发环境介绍

二、python可执行文件打包过程介绍

三、python可执行文件无法加载图片资源

===========================

一、Python+PyQt5开发环境介绍

在上一篇的文章中有详细的介绍:pyqt5环境安装部署中有明确且详细的介绍,该步骤是自己亲测有效的,当时w11刚发布,为了体验一下w11就重装了系统。

二、python项目打包过程

在网上找了很多篇,感觉这一篇写的非常详细:Pyinstaller打包python项目详解文章中的2.2打包多个文件,按照这个步骤是可以完成python项目的打包过程的;

三、python可执行文件无法加载图片资源

本文主要是记录第三点:python+pyqt5项目的可执行文件无法加载图片资源;

1、问题描述:可执行文件无法加载图片资源

 

 

这是按照打包步骤生成的exe可执行文件;

 

 这是双击python可执行文件的报错提示信息:无法加载图片资源信息;

在项目中有加载图片资源,但是在执行程序的过程中,无法在图片资源;

2、问题分析

在加载图片资源的时候我是直接用代码添加的的图片资源路径:

1     def add_machine_picture(self):
2         pix  = QPixmap("../image/machine.jpg")
3         self.label.setPixmap(pix)

 

 度娘后得知pyinstaller打包pythonGUI工程的时候不会打包图片资源,导致无法图片显示,执行程序的时候会有报错提示信息;

按照:https://blog.csdn.net/monster_li57/article/details/80601050文章的分析及处理思路,实现自己的解决方法;

3、问题处理

因为我的python GUI程序的开发环境是python+PyQt5+Qtdesigner,UI都是通过Qt设计师生成的,许多图片资源都是通过Qt设计进行添加。

3.1、Qt设计师生成的UI文件是通过pyuic5-tool工具转换为py文件;

3.2、Qt设计师添加的图片资源文件为qrc文件,通过pyrcc工具转换为py文件。具体的转换步骤参照上面的pyqt5环境安装部署文章。

前两步是为了后续打包工程的时候将UI及图片资源打包进工程;

3.3、处理措施:在UI生成的py文件引入qrc生成的py文件

自动生成文件引入的方式有问题,需要手动修改,引入的方式和我们常规的包导入方式一致;这样就可以将UI以及图片资源和业务逻辑全部关联起来

并解决项目工程打包生成的exe文件无法加载图片资源问题。

 

 

 我的工程目录结构如下:

目录结构

common:通用文件目录:工具函数、重复性调用的函数
image:图片资源
mock_test:某些页面的逻辑采用的mock的方式;
src:程序运行文件:每个页面的运行文件及主函数main
ui:UI采用的qtdesigner进行设计,没有采用代码生成的方式,主要包含ui、qrc文件;
allresource:上层目录,目录下的py文件主要是ui和qrc文件生成的可执行的py文件
运行方式
程序运行的主入口:src目录下的main.py文件,命令执行方式:
"python main.py"