pyInstaller使用总结(命令、资源、图片转换Base64使用,有问题可以随时沟通)

目录

1.pyInstaller打包命令简介

2.资源的添加

3.图片的资源添加

1.pyInstaller打包命令简介

(1)新建一个python虚拟环境。

conda create -n your_name python=3.9 

(2)激活将要使用的虚拟环境(如:your_name)

activate your_name

(3)安装打包的工具(提前安装pip工具)

pip install pyinstaller

(4)会自动将 pyInstaller 命令安装到 Python 解释器 目录中,pyinstaller 打包命令的基本语法

pyinstaller [--options] test.py

上述打包工具中的options是可以选择的-D产生一个目录包含exe和相应的环境,同时也是默认的打包工具(直接运行pyinstaller test.py即可)、-F产生单个的可执行文件等还可以(-w)设置控制控制台窗口。利用打包工具可以产生两个文件夹,第一个文件夹build用于构建可执行文件、第二个文件夹比较重要,用于应用程序的exe执行文件及其对应的所有依赖项。

2.资源的添加

打包过程中,经常面临着许多资源文件,如汉化文件、权重文件、及图片文件,其中对于普通文件可以有两种方式,不过都是异曲同工。

(1)使用命令

pyinstaller test.py --add-data "myfold;myfold"

此方式可以将myfold文件夹里面的内容全部打包进去,后边可以添加多个-add-data,从而达到多个资源的添加。

(2)使用.spec文件

a = Analysis(
    ['__main__.py'],
    pathex=[],
    binaries=[],
    datas=[('icons', 'icons'), ('translate', 'translate'), ('config', 'config')],
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    noarchive=False,
    optimize=0,
)

使用单个打包文件,生成.spec文件,在.spec的datas更改资源目录,如上图所示,注意路径要按实际进行(此方式不能将图片资源进行保存)

3.图片的资源添加

图片资源通过上述的方式是不能尽心资源的添加的,首先要将其转换为base64的格式,具体如代码

import base64
import os
def pictopy(picture_names, py_name):
    """
    将图像文件转换为py文件
    :param picture_name:
    :return:
    """
    write_data = []
    for picture_name in picture_names:
        filename = picture_name.replace('.', '_')
        open_pic = open("%s" % picture_name, 'rb')
        b64str = base64.b64encode(open_pic.read())
        open_pic.close()
        write_data.append('"%s" : "%s",\n' % (filename, b64str.decode()))

    f = open('%s.py' % py_name, 'w+')
    for data in write_data:
        f.write(data)
    f.close()


if __name__ == '__main__':
    # 指定文件夹路径
    folder_path = "D:\\GeniusWorld_jhz\\pyCharmProject\\testPicture"
    # 获取文件夹中的所有文件名
    file_names = os.listdir(folder_path)
    # 过滤出以 ".png" 结尾的文件名
    pics = [file_name for file_name in file_names if file_name.endswith(".png")]
    # 输出结果
    print(pics)

    pictopy(pics, 'memory_picture')  # 将pics里面的图片写到 memory_pic.py 中
    print("ok")

上述功能是批量将文件夹中的图片生成数组,通过转换加到memory_picture.py中,为了方便调用可以写成下边的方式。

image_data = {
"aimask" : "iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAA“,
}

在其他py文件中使用该数据就可以使用下面的引用

from memory_picture import image_data

如果是将其用作图标可以使用下边代码

    image = base64.b64decode(image_data[icon])

    # 创建QPixmap对象
    pixmap = QtGui.QPixmap()
    pixmap.loadFromData(image)

    # 创建并返回QIcon对象
    return QtGui.QIcon(pixmap)

上述是测试完成的结果,可以互相沟通交流,欢迎各位指导补充!!!

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值