Python打包exe遇到的坑,路径不对,文件找不到,递归超过最大深度等

遇到的坑一:RecursionError: maximum recursion depth exceeded

这是说你打包时递归超过最大深度,有两种情况:

1、你的项目所需要的第三方库确实多,递归深度也确实深。

解决办法:打包不成功也会生成一个xxx.spec文件,打开xxx.spec文件,将下面两行代码放在第二行第三行

import sys

sys.setrecursionlimit(5000)

 

2、你的项目所需的第三方库不多,但是你的Python环境里安装的库太多,这个时候建议你新建一个python虚拟环境,只安装你的项目需要的第三方库,然后在你新的虚拟环境中打包即可

 

遇到的坑二:文件找不到(路径不对),包括配置文件找不到,excel文件找不到等等

python打包之后,有一个奇怪的特点,直接说不好说,就结合下面代码来说一说:

代码目录结构如下:

Python打包exe遇到的坑,路径不对,文件找不到,递归超过最大深度等_第1张图片

__init__文件夹:

Python打包exe遇到的坑,路径不对,文件找不到,递归超过最大深度等_第2张图片

aa.py:

Python打包exe遇到的坑,路径不对,文件找不到,递归超过最大深度等_第3张图片

运行结果如下:

Python打包exe遇到的坑,路径不对,文件找不到,递归超过最大深度等_第4张图片

 

直接在Pycharm里运行出来的,路径确实是文件所在路径没有错,excel文件内容页读取到了,万事大吉

然后打包

打包中。。。。。。。

打包好了之后,运行看看

Python打包exe遇到的坑,路径不对,文件找不到,递归超过最大深度等_第5张图片

运行结果:

Python打包exe遇到的坑,路径不对,文件找不到,递归超过最大深度等_第6张图片

 

嗯哼?什么情况,路径怎么变成了这样乱七八糟的,不出所料,excel文件也读取不成功了,这也是配置文件。日志文件等别的文件也读取失败的原因,即如果是打包的话,直接用 下面这种获取路径的方法,获取到的路径就会是C:xxx/xxx 就不是真正的路径

os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

解决方法:

如果要获取真正的路径的话,就要用下面方法:

Python打包exe遇到的坑,路径不对,文件找不到,递归超过最大深度等_第7张图片

 

将__init__文件中获取路径的代码改成这样,在打包运行试试:

Python打包exe遇到的坑,路径不对,文件找不到,递归超过最大深度等_第8张图片

发现没问题了

 

遇到的坑三:闪退问题

如果直接双击exe程序,发现程序运行完了直接就退出,如果报错的话,连报错信息都来不及看就退了

解决方法:

打开cmd命令行,将exe文件拖拽到命令行中,然后按回车执行,就不会退出了

你可能感兴趣的:(Python)