Python使用PyInstaller打包exe如何嵌入图标无需依赖外部文件
方案核心逻辑
这个方法的本质是把图标文件转成Base64编码硬编码到Python文件中,完全脱离对外部图标文件的依赖,打包后就不会出现路径不对找不到图标的问题。
名词解释
pic2str有两个身份:一是第一段代码中用来转换图标的函数名,二是运行第一段代码后自动生成的Python文件的文件名,既不是变量也不是项目名,不需要修改。explode是示例中给图标转换后的Base64字符串定义的变量名,可以根据自己的需求自定义。
具体替换步骤
第一步:修改图标转换代码(第一段示例代码)
只需要改最后一行的调用参数即可:
if __name__ == '__main__': # 第一个参数替换成你自己的图标文件路径,比如'my_app_icon.ico' # 第二个参数替换成你自定义的变量名,比如'my_app_icon' pic2str('my_app_icon.ico', 'my_app_icon')
修改完成后运行这段代码,你的项目根目录会自动生成pic2str.py文件,里面已经存好了你的图标对应的Base64编码内容。
第二步:修改你自己的业务代码(对应第二段示例代码)
需要修改2处导入和调用的变量名:
- 导入语句中的变量名替换成你第一步自定义的名称:
# 把explode换成你自己的变量名,比如my_app_icon from pic2str import my_app_icon
- 解码Base64的位置替换成你自定义的变量名:
# 把explode换成你自己的变量名,比如my_app_icon byte_data = base64.b64decode(my_app_icon)
其他注意事项
- 如果需要转换多个图标,只需要在转换代码里多次调用
pic2str函数,每次传入不同的图标路径和变量名即可,所有编码都会自动追加到pic2str.py里。 - 后续用PyInstaller打包时不需要做额外配置,
pic2str.py会被自动打包进exe,生成的exe单独放到任何位置都能正常加载图标,不需要额外携带原图标文件。
内容的提问来源于stack exchange,提问作者Lethargistic
相关产品推荐
相关产品推荐

