通过 pyinstaller 将 python 脚本打包成可执行程序

1. 引言

很多时候,我们需要在 windows 环境编写和执行 python 脚本,但是去搭建一整套 python 运行环境看上去就过于繁琐了,即便是拥有 python 运行环境,脚本的执行也并不方便。
如果能把 python 脚本封装在一个可执行的 exe 文件中,通过双击运行,就会方便很多了。
pyinstaller 就是用来完成这个工作的,本文就来介绍 pyinstaller 的使用,让你将自己的 python 脚本封装成可执行文件。

2. pyinstaller

pyinstaller 的官网是:

http://www.pyinstaller.org/

pyinstaller 是一个 python 命令行工具,支持将 python2.7 或 python3.4~3.7 版本的 python 脚本通过透明压缩构建成更小的可执行文件。
事实上,pyinstaller 不知可以生成 windows 环境下的可执行程序 exe,还可以生成 GNU/Linux,Mac OS X,FreeBSD,Solaris 和 AIX 环境下的可执行程序,而其编译命令非常简单。
本文抛砖引玉,仅介绍 windows 环境下的 exe 文件的生成,如果其他系统环境中执行,只需要在安装 pyinstaller 时先安装对应的 OS 支持工具,执行相同命令即可生成对应环境的可执行文件。

# 此处有图片 1

3. pyinstaller 安装

安装 pyinstaller 前需要安装对应系统的支持工具。
要生成 windows 环境下运行的 exe 可执行文件,需要安装 pywin32,可以访问下面的链接下载对应版本的 PyWin32.whl 文件并安装:

https://www.lfd.uci.edu/~gohlke/pythonlibs/

安装好 pywin32 后,执行下面命令即可完成 pyinstaller 的安装:

pip install pyinstaller

4. pyinstaller 的使用

4.1. 基本用法

最简单的用法即是执行下面的用法:

pyinstaller scriptname
script name 就是你的 python 脚本,这样就可以生成一大堆文件,其中有一个 exe 文件,点击执行该 exe 文件即可。

4.2. 常用选项

pyinstaller 常用选项
选项默认值说明
–distpath DIR.\dist指定目标生成目录
–workpath WORKPATH.\build临时文件存储位置
–upx-dir UPX_DIR.可执行程序文件压缩器 UPX 的存放位置
–clean-构建前清空临时文件存放目录
–log-level LEVELINFO改变输出日志级别,可选的有:TRACE, DEBUG, INFO, WARN, ERROR
-D, --onedir构建结果位于一个目录下的多个文件
-F, --onefile -构建结果全部打包到一个可执行文件中,但文件会相应较大
–specpath DIR.生成可执行文件的路径
-n NAME, --name NAME脚本名生成的可执行文件的文件名
-p DIR, --paths DIR-import 包的搜索路径
-c, --console, --nowindowed执行时通过控制台进行输入输出
-w, --windowed, --noconsole-生成没有控制台的可执行程序(仅在 Windows 或 Mac OS X 中有效)
-i <FILE.ico or FILE.exe,ID or FILE.icns>, --icon <FILE.ico or FILE.exe,ID or FILE.icns>-指定可执行文件的 icon(仅在 Windows 或 Mac OS X 中有效)

5. 需要注意的问题

  1. file 等特殊变量可能无法返回正确的值,需要在打包前进行特殊关注
  2. 我们的脚本通常是 utf-8 编码,但 windows 的控制台常常是 gbk 编码,因此常常会遇到乱码的问题,需要格外注意
  3. 不同版本的 pyinstaller 的选项并不完全相同, 因此最好是执行 pyinstaller -h 查看当前版本 pyinstaller 支持哪些选项

6. 微信公众号

欢迎关注微信公众号,以技术为主,涉及历史、人文等多领域的学习与感悟,每周三到七篇推文,全部原创,只有干货没有鸡汤。

# 此处有图片 2

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值