引言

在工作过程中,我们经常需要将自己开发的工具或者脚本迁移到其他机器或者发送给其他同事使用,如果不将代码打包成为可执行文件,你就需要在其他机器上安装Python环境和各种依赖的模块,非常繁琐,本文将详细描述如何从代码打包成为可执行文件,再打包成安装包文件的过程,同时解决图标、依赖文件等常见问题,打包出一个可以商用的安装包程序。

概述

本教程是在 windows环境下,Python环境为 python3.7.4
整个打包过程分为两个阶段:

  • 代码文件 打包成为 可执行文件,这一阶段使用 Python的  **Pyinstaller **模块,打包生成的exe文件已经摆脱了Python环境的束缚,可以任意运行在其他的windows环境下,而不需要Python环境。
  • 可执行文件 打包成 安装包程序,这一阶段使用 Inoo Setup 软件进行打包,打包完成后会生成一个安装包程序,安装完成后就可以便捷的使用程序进行工作。

环境准备

Python代码

笔者从github上随意下了一个python代码,这是一个python实现的简单浏览器,主程序代码为MyBrowser.py,依赖文件为一些图片,启动的效果如下

Pyinstaller库

使用pip直接安装pyinstaller库
pip install pyinstaller

Inno Setup

Inno Setup
是一个免费的安装制作软件,小巧、简便、精美是其最大特点,支持pascal脚本,能快速制作出标准Windows2000风格的安装界面,足以完成一般安装任务。该软件用Delphi写成,其官方网站同时也提供源程序免费下载。它虽不能与Installshield这类恐龙级的安装制作软件相比,但也当之无愧算是后起之秀。

百度搜索 Inno Setup编辑器下载,下载第一个即可,下载完成后安装程序

代码打包成可执行文件

调出windows的cmd命令行程序,在命令行处进行打包操作,常用的打包命令有:

pyinstaller 代码路径 打包文件,可执行文件目录生成在 dist路径下
pyinstaller -F 代码路径 将代码打包成一个可执行文件
pyinstaller 代码路径 --noconsole 执行程序时没有控制台黑框
pyinstaller -i browser.ico 代码路径 带程序图标的可执行文件

如下,进入代码路径,执行打包,打包成功后,提示successfully,并且在代码路径下会生成dist路径,可执行文件就在dist/MyBrowser路径下

cd F:\REQ\REQ-PyQt5
pyinstaller MyBrowser.py

此时执行文件,可以看到在启动程序的同事,也会有一个黑色的控制台启动,并且对应的图片都没有成功加载,此时你需要将图片复制一份到可执行程序的同级目录下,方能成功加载,并且我们期望能够修改MyBrowser的程序图标为browser.ico。

所以我们的正确打包姿势应该是

cd F:\REQ\REQ-PyQt5
pyinstaller -i browser.ico MyBrowser.py --noconsole

虽然看起来图标没有变化,当你重命名或者移动时,该图标就会变化。

将图片复制到可执行文件目录下的操作我们在下一步打包成安装包时来操作。

将可执行文件打包成安装包

打开安装好的 Inno Setup编译器,选择用脚本向导创建新的脚本文件,点击确定

点击下一步

这里填入一些必要的项

这里不需要改变什么,点击下一步

这里就是整个打包过程的关键步骤,你需要将exe文件替换成你的程序文件,并且将整个Mybrowser目录都添加到其他应用程序文件中,顺便将依赖的图标文件添加到到下面的其他应用程序文件中:

接下来的几个选项页面,大家根据情况自行选择



这里也是关键的步骤,你需要执行你的输出文件夹和输出文件名以及图标

点击下一步一直到完成,点击是,确定,完成,此时会根据你的设置生成一份完整的编译脚本,并提示你是否要立即执行,点击确定即可,同时会提示你是否保存脚本,保存后开始执行编译,编译成功后,就会在你上一步设置的输出文件夹下生成安装包程序。

此时你的程序就可以安装并使用啦。

最后的运行效果如下