百木园-与人分享,
就是让自己快乐。

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

由于上一篇文章中使用了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 = 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,送给程序员自己的圣诞树!

来源:https://www.cnblogs.com/lwsbc/p/15746627.html
图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » 解决pyinstaller打包过程中外部资源无法加载的问题 ...

相关推荐

  • 暂无文章