pyinstaller 是最简单的 python 打包工具,一行命令即可将 python 程序转换成 exe 格式的可执行文件。
d:\autox> pyinstaller autoshutdown.py
生成的可执行文件在当前目录的 dist 目录,整个过程有种执行代码编译的感觉。
$ go-tree -l 2.\├── autoshutdown.py├── autoshutdown.spec├── build\│ └── autoshutdown\└── dist\└── autoshutdown\
pyinstaller 的安装会引入许多依赖,通过 pip 进行安装:
C:\Users\hyang0> pip install pyinstallerCollecting pyinstallerDownloading pyinstaller-5.7.0-py3-none-win_amd64.whl (1.3 MB)---------------------------------------- 1.3/1.3 MB 1.8 MB/s eta 0:00:00Requirement already satisfied: setuptools>=42.0.0 in c:\python\python311\lib\site-packages (from pyinstaller) (65.5.0)Collecting altgraphDownloading altgraph-0.17.3-py2.py3-none-any.whl (21 kB)Collecting pyinstaller-hooks-contrib>=2021.4Downloading pyinstaller_hooks_contrib-2022.14-py2.py3-none-any.whl (252 kB)---------------------------------------- 252.6/252.6 kB 1.3 MB/s eta 0:00:00Collecting pefile>=2022.5.30Downloading pefile-2022.5.30.tar.gz (72 kB)---------------------------------------- 72.9/72.9 kB 1.3 MB/s eta 0:00:00Preparing metadata (setup.py) ... doneCollecting pywin32-ctypes>=0.2.0Downloading pywin32_ctypes-0.2.0-py2.py3-none-any.whl (28 kB)Collecting futureDownloading future-0.18.2.tar.gz (829 kB)---------------------------------------- 829.2/829.2 kB 2.6 MB/s eta 0:00:00Successfully installed altgraph-0.17.3 future-0.18.2 pefile-2022.5.30 pyinstaller-5.7.0 pyinstaller-hooks-contrib-2022.14 pywin32-ctypes-0.2.0
通过 pyinstaller 对 python 代码打包可以免除在目标电脑安装 python 环境和各种依赖。最终 python 代码会被编译成一个独立可执行文件,方便分发执行。
当需求重复编译时,一般当源代码发生变化时需要这么做,可以先清除编译目录再执行编译,此时的命令为:
pyinstaller --clean -y autoshutdown.py
默认编译的 exe 可执行文件,在双击运行时会有一个黑乎乎的命令行窗口弹出,此时程序是在前台执行的:

如果我们的程序并没有使用标准输出来输出日志,而是通过读写文件写日志的。此时可以将 python 代码编译成后台程序,运行时不会弹框,也不会被不小心关掉。程序只能在任务管理器中查看进程信息。此时的编译命令为:
pyinstaller --clean -y -w autoshutdown.py
通过加一个 -w 参数可以将可执行程序转换为后台进程,运行时不会弹出一个黑乎乎命令行窗口。
默认编译的可执行文件是个 python 蟒蛇的图标,如果打算在编译时换个图标怎么做?可以把 ico 图标文件准备好,在编译时通过 --icon 指定图标文件就可以给可执行文件换图标了。
pyinstaller --clean -y -w --icon demo.ico autoshutdown.py
比如提供如下图标:

编译完成后的可执行文件如下图所示:

全文完。
如果转发本文,文末务必注明:“转自微信公众号:生有可恋”。
文章转载自生有可恋,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




