制作成可执行文件

大家都知道Python代码的运行需要解释器。

如果我们编写了一个Python代码开发的工具,给别人使用的时候,我们需要让别人做如下两步:

  1. 安装Python解释器
  2. 在命令行运行python程序文件,比如: python xxx.py

如果别人是一个非IT人士,使用这样的工具,就太麻烦了。

如果我们能直接让别人直接双击运行我们的程序就好了。

有没有这样的好事?

有!

有几款工具可以把 解释器、Python 代码 和 依赖的库 制作到一个目录中,我们只需要双击其中的 可执行程序,就可以运行我们的Python程序了。

我觉得其中最好用的就是 PyInstaller。

PyInstaller 支持 Python 2.7 和 Python 3.3 以后的版本。

支持在 Windows, Mac OS X, and Linux 系统上打包出 可执行程序。

其官方网站在这里: http://www.pyinstaller.org

下面我们就来看看在Windows使用它的例子。



命令行程序打包

首先我们需要安装 PyInstaller, 当然用pip命令安装喽,如下:

pip install pyinstaller



假设我们需要开发一个可以让用户输入数学运算公式,并进行计算的程序。

我们先创建一个名为 byhy.py 的文件,写入如下代码

welcome = '''

    ########################################
    #                                      #
    #     白月黑羽 PyInstaller 演示程序    #
    #                                      #
    ########################################

'''

print(welcome)

while True:
    exp = input('\n\n请输入一个数学运算式 [输入quit退出]:')
    if exp == 'quit':
        break
    try:
        result = eval(exp)
    except:
        print('\n!!无效的运算式')
        continue

    print(f'结果为: {result}')

然后我们在cmd窗口, cd进入到该代码文件所在的目录下面,执行如下的命令

pyinstaller byhy.py --workpath d:\pybuild  --distpath d:\pybuild\dist

注意:

参数 --workpath 指定了制作过程中临时文件的存放目录

参数 --distpath 指定了最终的可执行文件目录所在的父目录

上面的命令执行结束后,我们进入到 目录 d:\pybuild\dist 中,就会发现有一个目录叫byhy (和我们的入口文件byhy同名),该目录中包含了如下文件

default

里面有一个可执行文件 就叫 byhy.exe ,和我们的入口文件byhy同名。

双击运行它,就可以发现效果和我们在命令行中运行一样。

但是它却不需要使用Python解释器了。 因为解释器就内置在这个目录中了。

以后我们要把这个程序给别人使用,只需要把目录 byhy 打包成 zip 文件 发给别人。

别人收到后,解压,执行里面的 byhy.exe 就可以直接运行了。

是不是很方便呢 :)



图形界面程序打包

有时候,我们开发的是一个图形界面的程序,使用类似上面的命令运行的时候,也会有一个console窗口(就是俗称的DOS黑窗口),这样很不美观。

我们在 执行打包命令的时候,可以加上参数 --noconsole 就可以去掉该窗口。

比如

pyinstaller guitool.py --noconsole --workpath d:\tmp\pybuild  --distpath d:\tmp\pybuild\dist