python打包代码中涉及的图片_python – pyinstaller捆绑图像的文件路径?

问题:如何在pyinstaller构建的程序中使用数据文件?

让我们首先假设当作为脚本运行时,python脚本当前正在工作,并且脚本中包含以下行:

filename = PhotoImage(file='C:\\Users\\username\\Downloads\\TripApp\\BgSM.gif')

此行表示脚本正在从固定目录中检索文件(可能不是最佳实践,但对于示例很好),并将该.gif文件转换为PhotoImage()对象实例.这将是我们的基准.

当我们的脚本作为pyinstaller构建的程序运行时,需要完成三件事才能成功使用此文件.

1.在pyinstaller构建期间,将文件移动到已知位置

通过向`.spec’文件添加数据指令来完成此步骤.有关如何执行此操作的详细信息,请参阅this post.但简而言之,这将是必要的:

datas=[

('C:\\Users\\test\\Downloads\\TripApp\\BgSM.gif', 'data'),

...

],

请注意,元组中有两个元素.第一个元素是我们的.gif文件的路径,因为它在我们将它打包成pyinstaller可执行文件之前存在于工作python脚本中.元组的第二个元素是运行可执行文件时文件所在的目录.

2.在运行时,找到我们的.gif文件

以下是问题中的示例函数,重新使用:

>示例的绝对路径,当脚本作为脚本运行时,或

>当脚本作为pyinstaller构建的程序运行时,数据元组中指定的路径.

码:

def resource_path(relative_path):

""" Get absolute path to resource, works for dev and for PyInstaller """

try:

# PyInstaller creates a temp folder and stores path in _MEIPASS,

# and places our data files in a folder relative to that temp

# folder named as specified in the datas tuple in the spec file

base_path = os.path.join(sys._MEIPASS, 'data')

except Exception:

# sys._MEIPASS is not defined, so use the original path

base_path = 'C:\\Users\\test\\Downloads\\TripApp'

return os.path.join(base_path, relative_path)

3.重新建立基线以在我们的pyinstaller构建的程序中工作

现在我们可以在作为脚本运行时构建.gif文件的路径,或者作为pyinstaller构建的程序,我们的基线变为:

filename = PhotoImage(file=resource_path('BgSM.gif'))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值