python程序打包成.exe方法之多文件(包含图片,等资源文件)打包

打包python程序最常用的是用pyinstaller这个工具,没有的小伙伴pip install pyinstaller直接安装就行了。 

一、打包单个文件 - pyinstaller 的用法

        

        我这里使用的pycharm的命令窗口,执行后,生成的exe在dist文件夹下。打包命令如下:

pyinstaller -F 你的python程序.py 

        当然也可以加一些参数,-w: 取消控制台显示

                                                -n:     自定义.exe的名字 

二、打包包含多个资源文件 - pyinstaller 的用法

        有时候,我们的py程序可能引用到一些pic.png图片等资源文件,如果想打包成一个exe,按照下面步骤操作,打包后的exe一般都没什么问题:

1。把图片转成.py文件用于引用
  • 使用base64编码方式对程序中所使用的图片进行编码操作
import base64


def pic2py(picture_names: list, py_name):
    write_data = []
    for picture_name in picture_names:
        filename = picture_name.replace('.', '_')
        with open("%s" % picture_name, 'rb') as r:
            b64str = base64.b64encode(r.read())
        # 注意这边 b64str 一定要加上.decode()
        write_data.append('%s = "%s"\n' % (filename, b64str.decode()))

    with open(f'{py_name}.py', 'w+') as w:
        for data in write_data:
            w.write(data)
            
            
# 需要转码的图片:
pics = ["./pic.png"]
# 将pics里面的图片写到 image.py 中
pic2py(pics, 'image')

  • 程序会生成一个image.py的python脚本,里面包含了你的资源图片
    第二步:在主程序中导入image.py脚本引用,将图片编码在转成图片即可,引用方式如下:
from image import *

# 引用示例,pic.png,注意 转码后名字是pic_png
self.root.iconbitmap(image.pic_png)

到此,知道了图片的引用方式,打包py文件就简单了,

2。这里再介绍一种打包主程序的方式:

        通过spec文件打包。这个文件是怎么来的呢?是根据我们的主程序mypython.py通过命令

 pyinstaller  .\generate_app.py

 自动创建,也可以手动创建,它长酱紫:

# -*- mode: python ; coding: utf-8 -*-


block_cipher = None


a = Analysis(
    ['generate_app.py'],
    pathex=[],
    binaries=[],
    datas=[],
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
    noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)

exe = EXE(
    pyz,
    a.scripts,
    a.binaries,
    a.zipfiles,
    a.datas,
    [],
    name='generate_app',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=True,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
)

        当然.spec里的参数,比如'name','debug'可以随意修改,然后执行下面命令打包,就大工搞成了!

pyinstaller .\generate_app.spec

总结,包含图片等资源文件的打包方法:

  • 把资源文件转成.py
  • 修改主程序的图片引用
  • 创建.spec文件,做相应需求修改,执行 pyinstaller xxxx.spec
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值