pyinstaller打包命令已经加上资源了,还是提示找不到文件

上一篇就以为坑全踩完了,已经变成打包大神了,结果又遇到新问题😔

为了给我的小工具加个鸭鸭图标(这图标完全可以不加啊!),我又进入了找不到资源这个坑

明明打包的命令已经加上--add-data ”res;res“,打包后依然提示not defined

终于找到以下参考的2020年的文章,找到原因:

原因是当app运行的时候,会先把资源解压到一个系统的临时目录,包括打包进去的 images文件,但是坑爹的是,此时的代码并不能直接通过 “images/alien.bmp” 这样的相对路径来得到文件

并且根据文中给出的解决方案:

这时需要用到 sys 的一个半私有的属性 sys._MEIPASS,根据官方的说明,它是 pyinstaller 运行时创建的临时目录的绝对路径。需要在程序运行时判断当前是不是有这个属性,如果有的话,生成临时目录下图片的绝对路径,如果没有的话,那就直接返回当前程序的绝对路径

def get_resource_path(relative_path):
    if hasattr(sys, '_MEIPASS'):
        return os.path.join(sys._MEIPASS, relative_path)
    return os.path.join(os.path.abspath("."), relative_path)

在需要使用路径的地方调用该方法去获取资源文件

最终通过添加资源文件+修改获取文件路径解决

第一步,将代码中获取文件路径,改成调用上面写的方法

self.iconbitmap(get_resource_path('res/yaya.ico'))

第二步,打包时加上资源文件

根据你用的打包方法,可以在命令行中添加--add-data ”res;res“

也可以在spec文件中data加上数据。

打包成功!!!

但是我还准备瞎搞一些东西,再试试spec里的参数,看看还能碰上什么坑

参考资料
pyinstaller 完美解决打包图片等资源的问题_pyinstaller打包图片-CSDN博客

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值