拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 解决pyinstaller打包程序中外部资源无法加载的问题 ...

解决pyinstaller打包程序中外部资源无法加载的问题 ...

白鹭 - 2022-02-22 2066 0 0

由于上一篇文章中使用了pyinsatll的方式将二维码生成器进行打包成exe程序应用,在打包的程序中遇到了一个问题就是不能将外部的资源图片打包进exe的应用程序,

所以,在这里记录一下怎么可以将外部的资源档案打包到exe的应用程序中,这样无论在哪台计算机上面执行都能展示出我们的资源图片,不会出现找不到资源的情况,

首先,就是QRC格式的资源档案,就像下面这样将资源路径配置到这样的档案中,我创建了一个 images.qrc 的档案,

【阅读全文】

file

<RCC>
    <qresource prefix="/">
        <file>default.png</file>
        <file>images/1.jpg</file>
        <file>images/2.jpg</file>
    </qresource>
</RCC>

将需要打包的资源档案路径按照上面这样配置,

需要注意的是这里的资源路径组态档(images.qrc)是和你需要打包的.py档案在同一个目录下面,

接下来就是将qrc生成.py的python模块档案,实际上生成后是将外部资源转换成了二进制的档案,使用下面这个命令进行生成,

pyrcc5 -o images.py images.qrc

生成的 images.py档案就是这样,由于太长这里仅仅展示了部分的内容,

# -*- coding: utf-8 -*-

# Resource object code
#
# Created by: The Resource Compiler for PyQt5 (Qt v5.15.2)
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore

qt_resource_data = https://www.cnblogs.com/lwsbc/archive/2021/12/29/b"\
\x00\x01\x14\x4d\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x01\x44\x00\x00\x01\x41\x08\x06\x00\x00\x00\x0f\x27\xd6\x75\
\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\
\x04\x67\x41\x4d\x41\x00\x00\xb1\x8f\x0b\xfc\x61\x05\x00\x00\x00\
\x09\x70\x48\x59\x73\x00\x00\x0e\xc3\x00\x00\x0e\xc3\x01\xc7\x6f\
\xa8\x64\x00\x00\xff\xa5\x49\x44\x41\x54\x78\x5e\xec\xbd\x07\xbc\
\x56\xc5\x96\xe6\x3d\xf3\x4d\xce\x3d\x33\x3d\xb7\xbb\x67\xfa\x76\
\x98\xee\xb9\xdd\xf7\x5e\xf5\x9a\x23\x8a\x59\x89\x06\x10\x73\x44\

最后,还需要将我们生成的资源档案 images.py模块汇入到需要参考的模块当中,

在做处理之前,我们原始的参考资源的方式是这样的,

self.image.setPixmap(QPixmap('default.png'))

在做了处理之后,需要将前面转化好的 images.py 模块汇入到当前需要参考资源的模块,

import images

self.image.setPixmap(QPixmap(':/default.png'))

注意在使用 images.py 的资源参考方式后,在这个图片路径前面多了一个冒号的使用,

最后,执行正常的打包程序即可,打包完成后会发现我们的资源图片能够正常的参考,

pyinstaller -F -w -i favicon.ico test2.py

可以使用 -i 自变量给应用加上图示,

在打包程序中如果出现模块没有发现的问题,将参考的自定义模块放到外部的包下面参考即可,比如需要打包main.py ,则main.py的同一级目录下面尽量只有它一个.py档案,否则打包成exe档案很容易出现找不到参考包的情况,

file

【往期精彩】

pyqt5做了一个二维码生成器,已打包成exe可执行程序...

如何在控制台实作一个资料管理系统(包括MYSQL数据库的增删改查)

自制档案格式转换器,支持 .txt/.xlsx/.csv格式转换...

PyPDF2如何实作按照PDF页码提取后并另存为PDF格式档案?

浪漫的turtle,送给程序员自己的圣诞树!

欢迎关注作者公众号【Python 集中营】,专注于后端编程,每天更新技术干货,不定时分享各类资料!
标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *