大家好,我是才哥。
前段时间在制作词云制作小工具的时候,直接在命令行用pyinstaller -F 工具.py指令打包成功后,启动exe可执行文件的时候各种报错。
今天,我们就分享一下踩坑经过。
1. 安装pyinstaller
PyInstaller是一个用来将Python程序打包成一个独立可执行文件的第三方包。
因是第三方包,所以需要安装一下:
pip install pyinstaller
或者升级到最新版本:
pip install --upgrade pyinstaller
或者安装开发者版本:
pip install https://github.com/pyinstaller/pyinstaller/archive/develop.tar.gz
当然了,也可以下载whl文件,然后pip install安装
更多可参考官网指引:
http://www.pyinstaller.org/downloads.html
2. 打包初体验
我们简单试下打包python代码为exe可执行文件,测试代码如下:
# 测试.py
import os
path = os.getcwd()
print(f'当前文件路径:{
path}')
os.system('pause')
这段代码是打印文件所在的目录,我们用pyinstaller简单打包的命令如下:
pyinstaller -F 测试.py
这个命令,执行过程如下:
(env_test) F:\PythonCool\pyinstaller>pyinstaller -F 测试.py
403 INFO: PyInstaller: 4.3
403 INFO: Python: 3.8.10 (conda)
434 INFO: Platform: Windows-10-10.0.19042-SP0
436 INFO: wrote F:\PythonCool\pyinstaller\测试.spec
455 INFO: UPX is not available.
468 INFO: Extending PYTHONPATH with paths
['F:\\PythonCool\\pyinstaller', 'F:\\PythonCool\\pyinstaller']
501 INFO: checking Analysis
...
...
15006 INFO: Appending archive to EXE F:\PythonCool\pyinstaller\dist\测试.exe
18999 INFO: Building EXE from EXE-00.toc completed successfully.
成功后会在同级目录下生成一个dist文件,里面就是一个和代码文件名同名的可执行文件:

双击该可执行文件,我们可以看到直接在python解释器里运行测试.py文件时一样的结果:

这里需要注意的是,我们在进行打包的时候,有必要指定被打包的py文件的路径,两种方式供选择:
方式一:先切换到被打包py文件目录,再执行打包指令
(base) C:\Users\Gdc>cd F:\PythonCool\pyinstaller
(base) C:\Users\Gdc>F:
(base) F:\PythonCool\pyinstaller>pyinstaller -F 测试.py
方式二:打包指令中指定py文件的绝对路径
(base) C:\Users\Gdc>pyinstaller -F F:\PythonCool\pyinstaller\测试.py
关于成功打包的测试.exe可执行文件,我们发现其图标是默认的,且启动时会显示命令行窗口。那么,我们可以怎么自定义exe图标,又或者去掉命令行窗口呢?
3. 打包进阶体验
好了,接下来,我们先看看关于pyinstaller打包时候的一些别的参数都有哪些,如何自定义exe图标以及如何去掉命令行窗口等等。
(env_test) F:\PythonCool\pyinstaller>pyinstaller -h
pyinstaller -h可以查看其参数说明,由于较多这里不做完整展示,摘取部分常用参数做简要介绍:
| 参数 | 说明 |
|---|---|
| -F | 产生单个的可执行文件 |
| -D | 产生一个目录(包含多个文件)作为可执行程序 |
| -a | 不包含 Unicode 字符集支持 |
| -d | debug 版本的可执行文件 |
| -w | 指定程序运行时不显示命令行窗口(仅对 Win |

本文详细讲述了使用PyInstaller打包Python代码为exe可执行文件的全过程,包括安装步骤、基本打包、进阶配置(自定义图标、去除命令行)、处理配置文件和隐式库调用的技巧,以及解决实际打包中遇到的问题。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



