pyinstaller打包python程序
使用pyinstaller可以把python程序打包成exe可执行文件,这样就能在其他人的电脑上运行你的程序了。这是我首次使用遇到的坑和一些经验总结。
1、pyinstaller打包exe文件时,递归太深:RecursionError: maximum recursion depth exceeded。
解决方法:
第一步:使用pyi-makespec [option] name.py,生成name.spec文件。(这里,我的name.py是control_gui.spec)
可以参考官方文档:点击打开链接第二步:将以下代码添加到上面生成的spec文件中。
import sys
sys.setrecursionlimit(5000)#5000这个数字可以随便设
第三步:使用pyinstaller [option] name.spec进行打包。
2、打包成exe文件后,点击exe文件,提示:Failed to execute [程序名]。
这个问题用了比较久的时间去解决,我这里出错的主要原因是使用了tensorflow,然后对应的pandas版本不正确,才导致了错误,下面我会详细说明一下。
首先,分析错误的步骤。建议一开始先使用-D命令对程序进行打包,这样在生成的build文件夹中也会有一个exe文件,点击这个exe文件可以调出控制台,上面会给出错误信息,控制台给出错误信息的时间特别短,所以有必要进行录屏,然后仔细观察错误,以下给出我的程序中出现的错误。
很明显,上面给出错误是:type object 'pandas._libs.tslibs.conversion._TSObject'has no attribute '_reduce_cython__'。
其中,以下两个作者给出了解决方案,我是按照第二个作者的博客修改成功的,因为我的Python版本是3.6。第三个文章是github上针对这一问题的讨论,有兴趣的也可以参与一下。
第一个:成功解决打包时不能import自定义的包或库出现运行exe时No module named 缺少包;
第二个:成功解决pyinstaller打包AttributeError:type object pandas._TSObject has no attribute _reduce_cython_。
第三个:no attribute __reduce_cython__
具体说一下我的问题所在。我用的python版本是3.X是一个原因,其中一个重要的原因是我的Pandas版本是0.23.0,应该把安装0.20.0版本。因此,我把pandas版本使用pip install pandas==0.20.0安装之后,问题就解决了!
-----------------------不间断更新-------------------------------
转载请注明本文来源,谢谢!
上一篇: Andorid 风水罗盘简单实现
下一篇: 关于HTML文本格式化的详细介绍