【Python】 将资源文件打包进exe

环境: Win10 + Python3.8

以下方法亲测可用:

1. 修改代码,将图片路径的构造方式由相对路径变为构造绝对路径,因为在执行exe时资源文件会被解压到C:\Users\xxx\AppData\Local\Temp_MEI33282这样的一个名称随机的文件夹

def resource_path(relative):
    if hasattr(sys, "_MEIPASS"):
        return os.path.join(sys._MEIPASS, relative)
    return os.path.join(relative)

# 调用资源文件路径如下

resPath = resource_path(os.path.join("{}.jpg".format(resFileName)))

2. 生成*.spec 文件并修改。 例如: 我的程序名字是main.py , 以下命令生成main.spec 文件, 与main.py同级目录。

pyinstaller -F -c main.py

  打开main.spec, 找到EXE 部分, a.datas 下面的数组里[] 按照格式添加资源文件的位置。

  第一个字段是文件名; 第二个字段是绝对路径;第三个字段是运行exe时的临时位置,不用改变。
 

exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          [("logo.jpg","E:/myproject/Demo/images/logo.jpg","DATA"),
	   ("logo2.jpg","E:/myproject/Demo/images/logo2.jpg","DATA")],

3. 打包成exe 。 注意: 因为main.spec已经修改了,这里打包时应该用spec文件

pyinstaller -F main.spec

  如果运行时有控制台的话, 需要修改main.spec, 将console=True 改为False

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值