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

如上,显示 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 命令行运行 如下,确定脚本可以正常使用。

VS运行正常

Win运行正常

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

执行过程1

执行过程2

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

test目录
dist目录

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

双击运行
命令行运行

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

3. pyinstaller 打包多个 python 文件

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

image.png
image.png
image.png

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

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

执行日志1
执行日志2

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

4. pyinstaller通过配置文件打包

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

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

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

test目录中生成的内容

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

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


image.png

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

添加文件列表

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

\color{red}{值得注意的是:.spec 文件必须放在项目的根目录下,即所有的项目文件必须在 .spec 文件所在的目录中。}

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

更多详情参考官方网站


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,383评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,522评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,852评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,621评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,741评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,929评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,076评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,803评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,265评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,582评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,716评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,395评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,039评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,027评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,488评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,612评论 2 350

推荐阅读更多精彩内容