关于python:解决pyinstaller打包过程中外部资源无法加载的问题

62次阅读

共计 1858 个字符,预计需要花费 5 分钟才能阅读完成。

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

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

首先,就是 QRC 格局的资源文件,就像上面这样将资源门路配置到这样的文件中。我创立了一个 images.qrc 的文件。

【浏览全文】

<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 文件很容易呈现找不到援用包的状况。

【往期精彩】

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

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

自制文档格局转换器,反对 .txt/.xlsx/.csv 格局转换 …

PyPDF2 如何实现依照 PDF 页码提取后并另存为 PDF 格式文件?

浪漫的 turtle,送给程序员本人的圣诞树!

正文完
 0