将py文件打包成exe文件(包含遇见的问题以及解决办法)

首先是利用pip安装工具库pyinstaller,即Win+R后输入cmd进入控制台:

python生成exe文件执行完了就闪退怎么办 py文件生成exe运行失败_执行过程


然后输入:pip install pyinstaller 如下:

python生成exe文件执行完了就闪退怎么办 py文件生成exe运行失败_递归_02


当最后显示successfully的时候,就可以进行下一步,输入:pyinstaller -F E:\deploy.py(黄色部分为自己要打包的py文件的存储地址)

执行这一步的时候如果最终没有报错当然更好,就可以在执行过程中看见生成exe的位置,但是自己在运行过程中遇见了两个错误,列举如下:

1.RecursionError: maximum recursion depth exceeded

原因: ast模块默认深度为1000,而其自身调用太多次递归,超出了python默认递归的深度;

解决办法: 手动改变递归深度,如下:

在上面的运行过程中,虽然报错,但是在过程中会产生一个spec文件,在代码执行过程最开始就可以看见位置(忘记截图了555),我是在这:

python生成exe文件执行完了就闪退怎么办 py文件生成exe运行失败_控制台输入_03

然后就用记事本打开这个.spec文件并在第二行加入这两句话改变深度:

import sys
sys.setrecursionlimit(100000)

python生成exe文件执行完了就闪退怎么办 py文件生成exe运行失败_递归_04


最后回到控制台输入以下内容即可(注意pyinstaller后面跟的是自己的地址):

pyinstaller C:\Users\LENOVO\deploy.spec

这样运行就没有报越过深度的错了,但出现了下面这个错误:

2.UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xce in position 109: invalid continuat

深度的错误已经没有了,开始报编码的错误,如上。这时一方面检查执行的文件里面是否有中文,另一方面,将控制台的编码格式设置为utf-8,方法如下:

首先在控制台输入 chcp 65001,会进入一个新的控制台:

python生成exe文件执行完了就闪退怎么办 py文件生成exe运行失败_执行过程_05


然后再执行前面的语句即可:

python生成exe文件执行完了就闪退怎么办 py文件生成exe运行失败_python_06

在执行结果的最后能够看见exe文件存储的位置(红色方框中内容):

python生成exe文件执行完了就闪退怎么办 py文件生成exe运行失败_控制台输入_07

在其指向的位置能够看见exe文件,点击即可运行:

python生成exe文件执行完了就闪退怎么办 py文件生成exe运行失败_控制台输入_08


因为默认很多东西放在C盘(包括exe),会导致C盘爆满,如果要在指定位置存储exe文件的话,cd进入文件夹(包含要打包的文件)再打包即可:

python生成exe文件执行完了就闪退怎么办 py文件生成exe运行失败_递归_09