Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >用pyinstaller打包时的图标问题

用pyinstaller打包时的图标问题

原创
作者头像
用户8832503
发布于 2022-03-02 05:43:34
发布于 2022-03-02 05:43:34
1.1K00
代码可运行
举报
文章被收录于专栏:php编辑php编辑
运行总次数:0
代码可运行

前言

因为昨天重新研究了下python的打包方法,今天一番准备把之前写的一个pdf合并软件重新整理一下,打包出来。

但在打包的过程中仍然遇到了一些问题,半年前一番做打包的时候也遇到了一些问题,现在来看,解决这些问题思路清晰多了,这里记录下。

问题

打包成功,但运行时提示Failed to execute script xxx。这里又分很多种原因,这时不要用-w打包,然后在终端.\xxx.exe的方式运行,就可以看到输出日志了。

原因一

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
D:\02-python\2019-09-30_pdf_opt\dist>.\pdfmerge.exe
Traceback (most recent call last):
  File "pdfmerge.py", line 5, in <module>
ModuleNotFoundError: No module named 'PyPDF2'
[47572] Failed to execute script pdfmerge

这个是因为我们打包的时候用的是系统的pyinstaller命令,而系统的python库里没有安装相应的依赖包,这时要么用退出当前的虚拟环境,要么在进入虚拟环境并给虚拟环境在Scripts下面安装pyinstaller命令。

原因二

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
D:\02-python\2019-09-30_pdf_opt\dist>.\pdfmerge.exe
Traceback (most recent call last):
  File "pdfmerge.py", line 97, in <module>
  File "tkinter\__init__.py", line 1871, in wm_iconbitmap
_tkinter.TclError: bitmap ".\assert\efon.ico" not defined
[95216] Failed to execute script pdfmerge

这个是因为我们在py代码里指定了程序图标,但pyinstaller不能将依赖文件打包到一个exe里,所以需要我们把图标文件拷贝到当前exe目录下。当然,然后另外的解决办法,就是下面我们要讲的把图标打包到代码里的方法。

把图标打包到代码里

  • 首先,编写一个py程序,来自动生成一个包含图标内容的类
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import base64
with open("icon.py","w") as f:
    f.write('class Icon(object):\n')
    f.write('\tdef __init__(self):\n')
    f.write("\t\tself.img='")
with open("icon.ico","rb") as i:
    b64str = base64.b64encode(i.read())
    with open("icon.py","ab+") as f:
        f.write(b64str)
with open("icon.py","a") as f:
    f.write("'")

  • 然后我们在我们要打包的py程序里去指定这个图标:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    with open('tmp.ico','wb') as tmp:
        tmp.write(base64.b64decode(Icon().img))
    window.iconbitmap('tmp.ico')
    os.remove('tmp.ico')

原理就是先把Icon类的里ico数据读出来,转换为二进制再写到当前目录生成一个临时ico,然后指定程序图标,最后删除这个临时图标。

这样就能保证我们的程序一定能在当前目录加载图标。一气呵成,速度非常快,并不会看到有生成临时文件。

如果程序里还有其他外部依赖文件,可以按照同样的道理处理。

这样我们的打包过程就完成啦,最终就只有一个exe文件,然后就可以发布了!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
用pyinstaller打包时的图标问题
因为昨天重新研究了下python的打包方法,今天一番准备把之前写的一个pdf合并软件重新整理一下,打包出来。
efonfighting
2020/02/24
2.9K0
Pyinstaller打包exe附带图片的方法
在最近的wordpress项目中学到了图片字节码可在文件中存在,于是我做了试验并成功了(就是代码里带一堆字节码……)
全栈程序员站长
2022/07/02
2.9K0
Pyinstaller打包exe附带图片的方法
使用PyInstaller打包可执行文件
之前都是使用py2exe将Python程序打包成可执行文件,但是最近需要打包成Macos上的可执行程序。于是,选择了py2app,但是使用下来发现坑比较多,最终还是放弃了。
drunkdream
2018/12/28
2.8K0
使用PyInstaller把Python
2、解压即用(V2.1)。注意环境变量,或者用pyinstaller.py的全路径,或者到解压目录下使用。*^_^*
py3study
2020/01/09
2.5K0
python打包exe——pyinstaller遇到的那些坑及解决办法
3.心大的人,直接从别的地方把文件拷贝到另外一个地方,实际路径发生了变化,导致scripts\pyinstaller-script.py文件中引用的文件还是原先的路径
梦无矶小仔
2022/06/30
5K0
python打包exe——pyinstaller遇到的那些坑及解决办法
2个技巧,学会Pyinstaller打包的高级用法
前段时间在制作词云制作小工具的时候,直接在命令行用pyinstaller -F 工具.py指令打包成功后,启动exe可执行文件的时候各种报错。
可以叫我才哥
2021/08/05
6.8K0
python之pyinstaller打包问题系列(二)
1.最开始处OpenCV bindings requires "numpy" package.应该是opencv模块和numpy发生冲突
梦无矶小仔
2022/12/20
2.8K0
python之pyinstaller打包问题系列(二)
python图像界面改左上角窗口的的icon图标
Traceback (most recent call last): File "d:\桌面\python项目\py_boomer-master\py_boomer-master\微信公众号.py", line 20, in <module> window.iconbitmap('D:/桌面/python项目/3.png') # Corrected file path for the icon File "f:\Anaconda\lib\tkinter\__init__.py", line 1871, in wm_iconbitmap return self.tk.call('wm', 'iconbitmap', self._w, bitmap) _tkinter.TclError: bitmap "D:/桌面/python项目/3.png" not defined
命运之光
2024/04/02
3380
python图像界面改左上角窗口的的icon图标
怎么将 Python 项目打包成 exe?
用 conda 单独创建一虚拟环境,比如写一个 tkinter 应用,对了为了好看,我们可以设置以下 icon,尺寸 32x32,大图标 64x64 准备一下即可。然后用 pyinstaller 将应用打成文件包 (含 exe),最后用 Inno Setup Compiler 打成安装包,里面就是各种文件关联,图标和信息的设置了。
程序猿川子
2024/07/04
2000
怎么将 Python 项目打包成 exe?
pyinstaller打包python项目
在日常工作中,基本都是直接执行python脚本,但最近有个项目,需要提供给外部使用,而使用者又完全没有编程基础,不太可能自己安装python,安装各种依赖,所以将python项目打包为exe程序就显得尤为必要。
法号戒糖
2024/03/20
7330
原程序运行良好,Pyinstaller
昨天决定分享一下最近写的exhentai爬虫程序,参考了这篇文章,看了下里面几个常见打包软件的简介表格(可惜没nuitka) 因为是给小白用户使用,做成单个文件形式,只能在Pyinstaller和py2exe之间选择 去各自官网看了下,发现py2exe很久没更新了,对python3新版本的支持也不是太好,就决定用Pyinstaller来封装/打包 这里略过Pyinstaller的安装和使用,重点说明症状,分析过程,解决办法和教训
py3study
2020/01/03
1.1K0
py 打包exe
Python脚本不能在没有安装Python的机器上运行,如果我们想把自己的脚本分享给没有python环境的小伙伴使用,这个时候就需要将脚本打包成exe文件,即使使用方电脑没有安装python解释器,这个exe也能在上面运行。
花落花相惜
2021/12/04
1.4K0
一文学会使用 PyInstaller 将 Python 脚本打包为 .exe 可执行文件
👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.
Lorin 洛林
2023/12/13
5.6K0
【解决方案】Pyinstaller打包exe文件详细教程
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/148629.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/04
2.5K0
猫头虎 分享:Python库 PyInstaller 的简介、安装、用法详解入门教程
今天猫头虎带您了解,如何使用 PyInstaller 将 Python 脚本打包为独立的可执行文件。最近有粉丝私信问我:“猫哥,我的 Python 程序怎么方便地打包成一个 .exe 文件,直接发给不懂 Python 的朋友用呢?”😅
猫头虎
2024/12/31
9020
别再问我Python打包成exe了!(终极版)
上次这篇文章中,评论区有好几条留言都是关心如何将python脚本打包成10多M的?
朱小五
2021/01/20
1.6K0
python打包教程
Python脚本不能在没有安装Python的机器上运行,如果我们想把自己的脚本分享给没有python环境的小伙伴使用,这个时候就需要将脚本打包成exe文件,即使使用方电脑没有安装python解释器,这个exe也能在上面运行。
花落花相惜
2021/12/06
1.1K0
Pyinstaller打包exe完整教程
pypi 镜像使用帮助https://mirrors.tuna.tsinghua.edu.cn/help/pypi/
全栈程序员站长
2022/09/13
1.4K0
Pyinstaller打包exe完整教程
Python打包利器:auto-py-to-exe
auto-py-to-exe 是一个用于将Python程序打包成可执行文件的图形化工具。本文就是主要介绍如何使用 auto-py-to-exe 完成 python 程序打包。auto-py-to-exe 基于 pyinstaller ,相比于 pyinstaller ,它多了 GUI 界面,用起来更为简单方便
披头
2020/09/25
2.9K0
Python打包利器:auto-py-to-exe
pyinstaller打包python程序
无标题.png 说明 文档对应内容为 pyinstaller 4.2, 支持 python 3.5+ 如果需要使用python2.7,则需要使用 pyinstaller <= 3.6 安装 从PyPI安装 pip install pyinstaller 升级 pip install --upgrade pyinstaller ---- 使用命令行方式 语法: pyinstaller [选项] 脚本 [脚本...] # 使用命令行方式 常用选项: 生成选项 -D # 生成单个可执行程序 -F #
CODER_D_XF
2021/01/21
1.6K0
pyinstaller打包python程序
相关推荐
用pyinstaller打包时的图标问题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档