用 Pyinstaller 打包文件为应用程序

376 阅读2分钟

虽然之前我们的程序写好了,但是需要依赖于Python环境。\

怎么才能把我们写好的Python文件转化为exe可执行文件呢?借助这个机会,我学习了一下pyinstaller打包文件的模块。\

用到的命令就一行:\

1pyinstaller -F tm_01_birthday.py

虽然命令就一行,但从开始执行,到最后真正地打包成 26.9M 的可执行文件,我还是经历了很多坑。\


坑1 递归太深报错

我直接在py文件的所在目录,输入上述的单行命令,不一会就报错了。

CSDN博客上说是,看上去似乎是某个库自己递归遍历玩的太嗨了,超过了python的栈高度限制。

解决方法如下:

1) pyinstaller -F tm_01_birthday.py

这一步肯定会报上述错误导致失败,但是会产生一个tm_01_birthday.spec文件

2) 在xxx.spec文件中增加两行(添加在原文件第二行):

1import sys
2sys.setrecursionlimit(5000)

3) pyinstaller tm_01_birthday.spec

至此,我成功的打包出了exe文件!

这样,你以为就结束嘛?

并没有。

看一下,这个文件的大小!303M!


坑2 文件太大

为什么会出现这种情况呢?\

因为我用的Anaconda,连同一些用不到的文件,都一并打包了,导致文件过大。\

我又一顿搜索,大概有两种解决方案。

1)使用pipenv模块,在文件目录下创建虚拟环境,在虚拟中打包文件。

为此,我特意试了试,但打包之后的文件还是303M!不知道为什么!

不过,我没有放弃!

2)使用纯净的Python环境

我有一台闲置电脑,我把电脑上的Anaconda卸载了,装了一个纯净的Python。

我的程序需要用到pandas、wxpy这两个第三方模块。

首先用pip 安装一下,然后再用 pyinstaller 执行那单行命令。

终于ok了!

文件大小26.9M\


坑3 外部数据\

打包好之后,会在dist文件夹下生成一个exe文件,但我运行之后没有任何反应。

这又是为啥呢?

我又搜索了一番,发现是数据的问题。

我的程序加载excel表格时,使用的是相对路径。 所以,程序是在等我的excel表格呀!

我把excel表格复制到dist文件夹下,再次打开了程序!


这一次终于真的成功了!\

开始提示我登录网页版的微信了!

然后,窗格上显示出了学生名单以及消息发送成功的提示。最后,我在手机微信里,看到了发送的消息!

# 复制以下代码,在手机端百度网盘打开!
# 打包文件源码

链接:https://pan.baidu.com/s/1y3p-hqRbxzOSztP7jEjQEw
提取码:wshc


-END-