什么情况需要python打包程序?
Python 程序的运行需要 python解释器,若没有安装 python解释器,那就无法运行 python程序。
但是当使用 Python程序的人不会使用命令执行程序,或者也不会安装 Python解释器,又或者就是不想安装那么多东西,就像点击exe执行的情况下,就需要将 Python 程序打包为 Windows下的 exe 程序了。
为了解决这种情况,Python程序的打包就很重要了,打包后的程序中集成了Python运行环境,这样在没有安装Python解释器的服务器上也就可以运行Python程序了。
Python 程序文件的打包方式
- 使用 pyinstaller 工具进行打包。
- 使用 py2exe 工具进行打包。
pyinstaller
1. 安装 pyinstaller 模块
运行下面命令
pip install pyinstaller
如上,显示 Successfully installed 就是安装成功了。
2. pyinstaller 打包单个简单 python 文件
打包使用的命令为
pyinstaller -F python文件名
如何实际操作呢?首先,我们需要先写一个 python 脚本。比如新建一个 test.py 文件,文件内容如下:
# -*- coding:utf-8 -*-
print(123)
print('hello')
print("I'm a man")
print('''python is good!
I like python...''')
在 Pycharm 中直接右键运行,或者使用 Windows 自带的 cmd 命令行运行 如下,确定脚本可以正常使用。
然后,用 Windows cmd 命令行进入脚本所在目录, 执行命令:pyinstaller -F test.py ,回车如下:
如上,打印出了一堆东西,信息最后提示了生成了一个 Windows应用程序 test.exe 文件。那让我们来看下都生成了些什么。
双击启动,或者在 cmd 命令行启动即可运行
这个生成的 test.exe 文件有7M之多,实际的 test.py 脚本文件只有不到 1K。这是因为打包后的 test.exe 文件中包含了Python脚本运行的环境在里面。
这样,你自己写的 Python 脚本就可以直接发给其他人用了,即使不安装 Python 环境也可以运行。
3. pyinstaller 打包多个 python 文件
既然是多文件打包,那首先我们来新建一个文件夹 test,然后在文件夹 test 中新建两个文件 test.py、test2.py和文件夹 tool, 然后在 tool 文件夹中新建文件 test3.py。目录树状图和文件路径展示如下:
三个文件夹中的内容如下:
test.py:
# -*- coding:utf-8 -*-
from test2 import my_add
print(my_add(20, 15))
test2.py:
# -*- coding:utf-8 -*-
from tool.test3 import say_num
def my_add(x, y):
z = x + y
return say_num(x, y, z)
test3.py:
# -*- coding:utf-8 -*-
def say_num(num1, num2, sum):
return '{0} + {1} = {2}...'.format(num1, num2, sum)
接着,先运行程序,确认可以正常运行,如下:
然后就可以使用 pyinstaller -F test.py test2.py tool/test3.py 命令进行打包了。如下:
如上图所示,执行成功后会在 dist 文件夹下面生成一个 test.exe 文件。这个就是打包好的文件。
4. pyinstaller通过配置文件打包
下面就来讨论下,当打包的 Python项目脚本文件很多时,应该怎么做。
这第二种方法也是使用 pyinstaller 命令,但是 执行的对象不同 。
还是用上述的 test 例子来说明。
首先,用 Windows cmd 命令行进入 test 脚本所在目录, 执行命令:pyinstaller -F test.py ,回车,此时会在 test 目录下生成 build 和 dist 文件夹, 还生成了 test.spec 文件,如下图所示:
删除 build 和 dist 文件夹,保留文件 test.spec,并打开。这个文件是打包时的配置文件,现在我们来修改配置文件,然后使用配置文件进行打包。
打开后的文件内容如下所示:
由于我们 test 程序没有图片、音乐、视屏等资源文件,所以这里只拿文件列表来说明。在 block_cipher = None 代码后面添加一个脚本文件列表,然后用这个列表替换掉 Analysis()函数的第一个参数即可。如下所示修改内容
修改完后保存关闭文件,然后执行打包命令:pyinstaller test.spec 回车,运行完后,一样会在dist文件夹下面生成test.exe文件。在文件很多的情况下, 只需要将文件的相对路径添加到.spec文件中即可。