解决pyinstaller打包过程中外部资源无法加载的问题 ...(pyinstaller打包后运行失败)

网友投稿 1477 2022-09-07

解决pyinstaller打包过程中外部资源无法加载的问题 ...(pyinstaller打包后运行失败)

解决pyinstaller打包过程中外部资源无法加载的问题 ...(pyinstaller打包后运行失败)

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

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

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

default.png

images/1.jpg

images/2.jpg

将需要打包的资源文件路径按照上面这样配置。

需要注意的是这里的资源路径配置文件(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 = 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 参数给应用加上图标。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Windows Server 密码忘记了该怎么修改
下一篇:correction of probe pressure artifacts in freehand 3D ultrasound
相关文章

 发表评论

暂时没有评论,来抢沙发吧~