yesterday0931 发表于 2019-3-8 18:09:13

【新人交流】用 pyinstaller 将带图片资源的py 一键打包为 exe

本帖最后由 yesterday0931 于 2019-3-9 07:16 编辑

import os
import re

pyname = os.listdir('C:/Users/XXX/Desktop/python_compile/input')
input_path = 'C:/Users/XXX/Desktop/python_compile/input/'
output_path = 'C:/Users/XXX/Desktop/python_compile/output/'
py_path = input_path + pyname

filename = pyname.split('.')
specname = filename + '.spec'
spec_path = output_path + specname

os.system('pyi-makespec ' + py_path + ' --specpath ' + output_path)

image_list = []
image_name = []
with open(py_path,'r', encoding='utf-8') as py_f:
    for line in py_f:
      temp = re.findall(r"\w:.*\.g", line)
      if temp:
            image_list.append(temp)
            name = re.search(r"((?!\\).)*\.(png|jpg)", temp).group()
            image_name.append(name)

with open(spec_path) as spec_f:
    insert_tuple = ""
    insert_temp = ""
    insert_string = ""
    l = len(image_name)
    lines = spec_f.readlines()

    for n in range(l):
      if l == 1:
            insert_temp = "('%s','%s','DATA')" % (image_name, image_list)
      elif l > 1:
            insert_temp = "('%s','%s','DATA')" % (image_name, image_list)
            if n == 0:
                insert_tuple = insert_temp
            else:
                insert_tuple = insert_tuple + ',' + insert_temp

    insert_string = "a.datas += (" + insert_tuple + ")\n"

    lines = insert_string
    open(spec_path, 'w').writelines(lines)

build_path = output_path + filename + '/build'
dist_path = output_path + filename + '/dist'

os.system('pyinstaller '+ ' -F ' + ' --distpath ' + dist_path + ' --workpath ' + build_path + ' ' + spec_path)

以上为代码。
作用:将带图片资源的py 一键打包为 exe
前提:安装好pyinstaller
方法:将XXX改为你的Windows用户名(也可自行修改),在桌面新建python_compile/input/ 文件夹,python_compile/output/文件夹 ,在input里面放入你要编译的py文档,
运行脚本会在output里得到输出,主要是dist文件夹。
注意:py文件中图片资源的路径必须为绝对路径,如:C:\\Users\\XXX\\Desktop\\python_compile\\input\\res\\gray_ball.png
小Tips:可将该py文件放入input文件夹,打包生成compile.exe,实现一键打包。

ouzhaoyuan 发表于 2019-3-26 00:10:15

谢谢楼主

bluebone 发表于 2019-3-26 00:56:16

学习!

neo2018 发表于 2019-3-26 14:02:23

看看,学习学习!

擎海潮2019 发表于 2019-8-5 15:59:23

谢谢分享

小西瓜吃西瓜 发表于 2019-8-19 09:14:11

mark,顶一下。

KOKORO112233 发表于 2019-8-27 10:09:38

学习~

小杨奔奔 发表于 2019-9-10 12:35:55

来学习一下

liuruijin 发表于 2019-9-11 18:55:21

666666666666666666666

Python丶小强 发表于 2019-9-19 13:04:02


看看,学习学习!

haizei 发表于 2019-9-25 19:59:33

1

cnpzhlq 发表于 2019-9-25 20:41:57

神奇的功能,需要使用

不眠的看守人 发表于 2019-9-30 06:59:23

支持

zhangtao9 发表于 2019-10-1 16:26:47

真的吗?我想看看!

和尚找尼姑 发表于 2019-10-1 20:35:21

1

白衣乄 发表于 2019-10-5 12:09:02

+

陈大炮 发表于 2019-10-7 13:55:45

谢谢楼主

xm_zhu 发表于 2019-10-29 15:58:20

谢谢,正好需要这方面的解决方法

堀江由衣 发表于 2019-11-1 12:43:14

这个必须看看

FC_Huang 发表于 2019-11-4 15:37:46

试试怎么操作的
页: [1] 2 3 4 5 6
查看完整版本: 【新人交流】用 pyinstaller 将带图片资源的py 一键打包为 exe