如何将 Python 脚本封装成可执行文件

一、背景

区别于 Cpp 等编程语言,Python 无法将其脚本直接转为可执行的文件。

「可执行文件」常见如:

  • Win 下后缀为 exe 的文件
  • Mac 下后缀为 app 的文件

在对应环境执行 Python 脚本,需要对应环境也同样有 Python 环境。这样在我们想给业务人员提供自动化的数据处理脚本 或 给女盆友绘制一棵圣诞树时,就会有产生一个困境:业务人员 / 女盆友 的电脑没有 Python 环境,即便装了对应的环境,后续的维护也较为麻烦。

既然无法直接转为可执行文件,那是否可以借助其他方法迂回地实现脚本的封装呢?答案是肯定的。

本文将从实现方法、具体内容、常见问题(如打包后的文件过大;Mac上无法打开文件等)3 个模块进行阐述。

二、实现

2.1 实现方法

最通用且方便的是,借助第三方库将对应 Python 脚本以及环境统一打包、封装。

这里强推 Pyinstaller ,在 Win 和 Mac 下都有很好的表现。

打包 Python 脚本的常用第三方库:

  • Win 环境: Pyinstaller / Py2exe

  • Mac 环境:Pyinstaller / Py2app (踩过巨坑,亲测不算好用)

  • Pyinstaller 安装方法:
pip install pyinstaller
2.2 具体内容

恰逢圣诞节,就用「绘制圣诞树」的脚本来举个栗子吧:

圣诞树代码详见:链接

Step 1: 首先,打开 终端 (Terminal),通过 cd 命令进入圣诞树代码脚本所在的目录下:

cd <所在路径>

Step 2: 使用 Pyinstaller 库封装脚本:

继续在终端依次执行下述命令:

pyinstaller -F -w -i <app 文件的图标文件名>.icns --clean --noconfirm <Python脚本名称>.py
pyinstaller -F -w --clean --noconfirm <Python脚本名称>.spec
  • -i 参数是指定可执行文件的图标,可不指定;
  • 若进行指定,Win下支持 ico 格式的文件,Mac 下支持 icns 格式的文件;
  • 可通过在线的图片格式转换网站,将 png 等格式的图片转为需要的 ico / icns 的文件

Step 3: 结果验收:

生成的可执行文件会保留在代码脚本所在的目录下的 dist 文件夹下,Win 环境下是 .exe 文件,Mac 环境下是 .app 文件,双击即可运行。

将对应文件拷贝出来发给需要的人即可,不需要对方装有 Python 环境。

下图是结果的展示:

  • 图标
    在这里插入图片描述
  • 绘制后的成图:
    在这里插入图片描述
2.3 常见问题 Q&A

Q1: 封装后的文件过大怎么办?

  • 原因:由于 Pyinstaller 默认将当前整个 Python 环境 和 脚本内容封装进去的,因此在 Python 环境中第三方库越多,打包后的可执行文件越大;

  • 解决方案:创建虚拟环境,进入(activate)虚拟环境后 pip 安装脚本需要用到的库,然后再用 Pyinstaller 封装脚本即可。

    conda create -n <虚拟环境名称> python=<Python的版本>
    conda activate <虚拟环境名称>
    

Q2: Mac 下无法打开文件?

  • 原因:双击 app 文件后显示“应用程序 无法打开”的弹窗,在大多情况下,都是因为对应文件没有执行权限;

  • 解决方案:在终端用 chmod 命令赋权限。

    chmod +x <文件完整目录>
    

Q3: 如何通过参数来控制应用?

  1. Python 脚本中调用外部文件的变量实现,实际运用时修改外部文件的内容即可;
  2. 更优雅的方法:用 Gui 开发工具实现,如简易便捷的 pysimplegui
  • 20
    点赞
  • 119
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Python 脚本封装可执行文件(Executable)可以使其在 Windows 系统中方便地运行,而无需安装 Python 解释器。以下是两种将 Python 脚本封装可执行文件的方法: 1. 使用 PyInstallerPyInstaller 是一个流行的 Python 应用程序打包工具,它可以将 Python 脚本打包可执行文件PyInstaller 支持 Windows、Linux、MacOS 等操作系统,并且可以打包单个可执行文件或目录。 安装 PyInstaller: ``` pip install pyinstaller ``` 将 Python 脚本封装可执行文件: ``` pyinstaller --onefile script.py ``` 这将在当前目录下创建一个名为 `dist` 的目录,其中包含一个可执行文件 `script.exe`。 2. 使用 cx_Freeze:cx_Freeze 是另一个 Python 应用程序打包工具,它可以将 Python 脚本打包可执行文件。与 PyInstaller 类似,cx_Freeze 也支持 Windows、Linux、MacOS 等操作系统,并且可以打包单个可执行文件或目录。 安装 cx_Freeze: ``` pip install cx_Freeze ``` 将 Python 脚本封装可执行文件: ```python import sys from cx_Freeze import setup, Executable setup( name = "Script", version = "1.0", description = "My Script", executables = [Executable("script.py", base=None)] ) ``` 这将在当前目录下创建一个名为 `build` 的目录,其中包含一个可执行文件 `script.exe`。 无论使用哪种方法,都可以将 Python 脚本封装可执行文件。在 Windows 中,用户可以双击可执行文件来运行 Python 脚本,而无需安装 Python 解释器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值