当前位置: 首页>编程语言>正文

pyinstaller打包Python程序为Windows下的exe执行文件

什么情况需要python打包程序?

Python 程序的运行需要 python解释器,若没有安装 python解释器,那就无法运行 python程序。
但是当使用 Python程序的人不会使用命令执行程序,或者也不会安装 Python解释器,又或者就是不想安装那么多东西,就像点击exe执行的情况下,就需要将 Python 程序打包为 Windows下的 exe 程序了。

为了解决这种情况,Python程序的打包就很重要了,打包后的程序中集成了Python运行环境,这样在没有安装Python解释器的服务器上也就可以运行Python程序了。

Python 程序文件的打包方式

  • 使用 pyinstaller 工具进行打包。
  • 使用 py2exe 工具进行打包。

pyinstaller

1. 安装 pyinstaller 模块

运行下面命令

pip install pyinstaller

pyinstaller打包Python程序为Windows下的exe执行文件,第1张
安装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 命令行运行 如下,确定脚本可以正常使用。

pyinstaller打包Python程序为Windows下的exe执行文件,第2张
VS运行正常
pyinstaller打包Python程序为Windows下的exe执行文件,第3张
Win运行正常

然后,用 Windows cmd 命令行进入脚本所在目录, 执行命令:pyinstaller -F test.py ,回车如下:

pyinstaller打包Python程序为Windows下的exe执行文件,第4张
执行过程1
pyinstaller打包Python程序为Windows下的exe执行文件,第5张
执行过程2

如上,打印出了一堆东西,信息最后提示了生成了一个 Windows应用程序 test.exe 文件。那让我们来看下都生成了些什么。

pyinstaller打包Python程序为Windows下的exe执行文件,第6张
test目录
pyinstaller打包Python程序为Windows下的exe执行文件,第7张
dist目录

双击启动,或者在 cmd 命令行启动即可运行

pyinstaller打包Python程序为Windows下的exe执行文件,第8张
双击运行
pyinstaller打包Python程序为Windows下的exe执行文件,第9张
命令行运行

这个生成的 test.exe 文件有7M之多,实际的 test.py 脚本文件只有不到 1K。这是因为打包后的 test.exe 文件中包含了Python脚本运行的环境在里面。
这样,你自己写的 Python 脚本就可以直接发给其他人用了,即使不安装 Python 环境也可以运行。

3. pyinstaller 打包多个 python 文件

既然是多文件打包,那首先我们来新建一个文件夹 test,然后在文件夹 test 中新建两个文件 test.pytest2.py和文件夹 tool, 然后在 tool 文件夹中新建文件 test3.py。目录树状图和文件路径展示如下:

pyinstaller打包Python程序为Windows下的exe执行文件,第10张
pyinstaller打包Python程序为Windows下的exe执行文件,第11张
pyinstaller打包Python程序为Windows下的exe执行文件,第12张

三个文件夹中的内容如下:

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 命令进行打包了。如下:

pyinstaller打包Python程序为Windows下的exe执行文件,第14张
执行日志1
pyinstaller打包Python程序为Windows下的exe执行文件,第15张
执行日志2

如上图所示,执行成功后会在 dist 文件夹下面生成一个 test.exe 文件。这个就是打包好的文件。

4. pyinstaller通过配置文件打包

下面就来讨论下,当打包的 Python项目脚本文件很多时,应该怎么做。

这第二种方法也是使用 pyinstaller 命令,但是 执行的对象不同
还是用上述的 test 例子来说明。

首先,用 Windows cmd 命令行进入 test 脚本所在目录, 执行命令:pyinstaller -F test.py ,回车,此时会在 test 目录下生成 builddist 文件夹, 还生成了 test.spec 文件,如下图所示:

pyinstaller打包Python程序为Windows下的exe执行文件,第16张
test目录中生成的内容

删除 builddist 文件夹,保留文件 test.spec,并打开。这个文件是打包时的配置文件,现在我们来修改配置文件,然后使用配置文件进行打包。

打开后的文件内容如下所示:


pyinstaller打包Python程序为Windows下的exe执行文件,第17张

由于我们 test 程序没有图片、音乐、视屏等资源文件,所以这里只拿文件列表来说明。在 block_cipher = None 代码后面添加一个脚本文件列表,然后用这个列表替换掉 Analysis()函数的第一个参数即可。如下所示修改内容

pyinstaller打包Python程序为Windows下的exe执行文件,第18张
添加文件列表

修改完后保存关闭文件,然后执行打包命令:pyinstaller test.spec 回车,运行完后,一样会在dist文件夹下面生成test.exe文件。在文件很多的情况下, 只需要将文件的相对路径添加到.spec文件中即可。

pyinstaller打包Python程序为Windows下的exe执行文件,\color{red}{值得注意的是:.spec 文件必须放在项目的根目录下,即所有的项目文件必须在 .spec 文件所在的目录中。},第19张

上面就是我在使用时实际操作的记录,作为笔记分享给你,也为了自己后续查看。

更多详情参考官方网站

下一篇:py2exe打包Python程序为Windows下的exe执行文件


https://www.xamrdz.com/lan/5vm1994707.html

相关文章: