python文件用pyinstaller库进行打包时,代码中用到的图片和我们自定义的python package包的处理办法

在使用python打包.py文件时,如果我们在代码中使用到了图片,那么在打包成功后,运行.exe文件时会提示 Failed to execute script xxx的错误,当我们自定义了python package并且想要打包.py文件时它们又该怎么办呢?下面请听WBB娓娓道来!!!



1. python代码中用到的图片如何打包到.exe可执行文件中

因为我们在使用pyinstaller对.py文件进行打包时,其不会将图片打包进去,所以我们要把图片转换为base64码,并将其放到.py文件中,在我们使用的时候直接导入(和导包差不多)然后再将其解码为图片就可以了

详细步骤
  1. 将图片转换为base64码并且保存到.py文件中,代码如下:
import base64
def transform(picture_name):
    #将图片转换问base64码
    open_pic = open("%s" % picture_name, 'rb')
    b64str = base64.b64encode(open_pic.read())
    open_pic.close()
    # 注意这边b64str一定要加上.decode()
    write_data = 'img = "%s"' % b64str.decode()
    f = open('%s.py' % picture_name.replace('.', '_'), 'w+')
    f.write(write_data)
    f.close()
if __name__ == '__main__':
    pics = ["a.ico", "b.ico", "c.jpg", "d.jpg", "e.jpg"]#这是5张图片
    for i in pics:
        transform(i)
    print("ok")

  1. 运行结果(生成五个图片的.py文件)
    在这里插入图片描述

  2. .py文件中的内容为img=base64码
    在这里插入图片描述

  3. 在使用时将其转换为图片,具体代码如下:

from 自定义的包名 import 图片的.py文件名 as b
def decodepicture(a,b,c):#a为图片的临时存放路径,b为图片的base64码,c为图片的.扩展名
    tmp = open(a+c, 'wb')
    tmp.write(base64.b64decode(b))
    tmp.close()
decodepicture('具体路经',b.img,'.图片的后缀')  #注意图片的base64码是b.img,图片的后缀别忘了'.'
   

注意:为了使打包后的.exe文件兼容有各种盘符的PC,图片的临时存放路径最好使用os.getcwd()自动获取(获取到的路径为用户.exe文件的存放路径)

  1. 我们在打包的时候将包含图片base64码的.py文件也一起打包进.exe文件,这样图片的打包就实现了
  2. 程序运行结束之后将临时生成的图片删除,代码如下:
def close_windows(path):
    ls = os.listdir(path)#获取该文件夹下所有图片的名称
    for i in ls:
        c_path = os.path.join(path, i)#把路径和图片的名称进行拼接
        if os.path.isdir(c_path):#判断是否为文件夹
            del_file(c_path)
        else:
            os.remove(c_path)

2.自定义了python package如何打包到.exe可执行文件中

在很多时候我们会自己创建python package,但是我们在用pyinstaller打包的时候他只会将python内置的和我们下载的第三方库进行打包,而我们自定义的包该怎么办呢?

详细步骤
  1. 找到 python的安装路径,如果找不到可以看下图:
    在这里插入图片描述

  2. 找到python的安装路径后,进入python安装路径下的Lib\site-packages目录,将自定义的python package拷贝到该目录下(注意:是自定义python package整个文件夹)如下图的bao:
    在这里插入图片描述

  3. 拷贝完成后即可对.py文件进行打包,可参考pyinstalller,pyinstaller的安装可参考pyinstaller安装



好了,WBB就先介绍到这里了,有什么地方WBB讲解的不是很清楚的话,大家可以评论留言,如果有帮助到各位博友的话,也希望大家可以点个赞,加个关注哦!!!

  • 6
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

"WBB"

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值