python打包成exe文件首先需要安装pyinstaller库,再进入到目标文件目录,输入命令行打包py文件,但出现报错:TypeError: an integer is required (got type bytes) 。我的是python3.9,下面是出现问题到解决问题的过程:
目录
1. 安装pyinstaller库
2. 打包py文件
2.1 pyinstaller命令参数
2.2 将py打包成exe文件
3. 查找报错原因
3.1 替换安装pyinstaller
3.2 详看报错内容
3.3 注意exe图标应为.ico格式
4. 最终效果
打开Win+R,输入cmd即可进入到终端Terminal。终端输入命令 pip install pyinstaller 安装库,安装后pip list 显示 PyInstallers 3.3.1版本。
pip install pyinstaller
首先需要了解pyinstaller命令的参数,如:
pyinstaller -F -w -i demo.ico test.py
参数 | 含义 | 详细说明 |
---|---|---|
-i | 图标路径 | 需要图片为ico格式,可以把png等图片用在线格式转换工具转换成ico图片 |
-F | 打包单个exe文件 | 通过代码只有一个py文件,如果有多个py文件不要选这个参数 |
-D | 打包多个文件 | 创建一个目录,dist里面包含exe以及很多依赖文件,适合框架形式编写的代码 |
-w | 禁止命令行窗口 | 启动exe程序时,不会弹出命令行窗口(仅对windows有效) |
-c | 使用控制台 | 使用控制台子系统运行(仅对windows有效) |
-h | 查看帮助 |
意思是对test.py文件打包成单个exe文件,并以根目录图片demo.ico生成exe图标,运行exe文件时禁止命令行弹窗。
然后进入到目标文件目录(我的是 E:\test\tree.py),执行打包命令 pyinstaller -F xx.py
e: #切换目录到E盘
cd test #进入目标文件夹
pyinstaller -F tree.py #对目标文件tree.py进行单个exe文件打包
但出现了报错:TypeError: an integer is required (got type bytes),打包失败。打包成功的标志是尾行显示 completed successfully , 同时在tree.py根目录下生成一些文件,其中dist文件夹下有exe文件,可以在任意地方(比如其他电脑)单独运行。
虽然安装 pyinstaller 成功了,但安装过程还是有一些爆红的,便用其他方法替换安装pyinstaller,执行命令:
pip install https://github.com/pyinstaller/pyinstaller/archive/develop.tar.gz
但没想到也出现报错:SyntaxError:Command errored out with exit status 1:
仔细查看中间一段报错提示:
SyntaxError:(unicode error)'utf-8' codec can't decode byte 0xbe in position 0: invalid start byte
Error:Building wheels requires the 'wheel' package. Please 'pip install wheel' then try again
第一行SyntaxError 说的是编码错误,无法解码utf-8格式,网上查了一些资料表示可能默认的是GBK编码,需要下载原始文件修改源码,增加encoding='utf-8',比较麻烦;
第二行Error 说的是缺少wheel模块,可以安装wheel再尝试。决定选这种方法执行:
pip install wheel
安装wheel模块的时候可以看到,系统自动卸载了已安装的PyInstaller 3.3.1版本,通过pip list 查看替换成了5.0.dev0 版本。
现在可以尝试打包py文件了,由于打算给exe文件自定义图标logo,我从阿里巴巴矢量图标库下载了一个图标的png格式文件,直接改后缀为.ico文件,执行命令:
pyinstaller -F -i tree.ico tree.py
但再次出现报错:struct.error: unpack requires a buffer of 16 bytes
查询得知原来是png格式的图标必须转换为.ico格式,不能强行改后缀,于是通过图片格式在线转换工具将图标转换成.ico格式。再次运行命令:pyinstaller -F -w -i tree.ico tree.py ,成功了!
pyinstaller -F -w -i tree.ico tree.py
tree.py开始的目录:
打包exe文件后的目录,自动生成了很多文件:
exe文件就在dist文件夹里面:
双击运行tree.exe,看看效果:
尝试用其他电脑运行tree.exe,一切正常。太棒了!