pyinstaller打包python程序

    使用pyinstaller可以把python程序打包成exe可执行文件,这样就能在其他人的电脑上运行你的程序了。这是我首次使用遇到的坑和一些经验总结。

1、pyinstaller打包exe文件时,递归太深:RecursionError: maximum recursion depth exceeded。

pyinstaller打包python程序_第1张图片

解决方法:

第一步:使用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文件可以调出控制台,上面会给出错误信息,控制台给出错误信息的时间特别短,所以有必要进行录屏,然后仔细观察错误,以下给出我的程序中出现的错误。

pyinstaller打包python程序_第2张图片

    很明显,上面给出错误是: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安装之后,问题就解决了!

    

-----------------------不间断更新-------------------------------

转载请注明本文来源,谢谢!

你可能感兴趣的:(pyinstaller打包python程序)