layout: post

title: Pyinstaller递归错误解决方案

date: 2018-06-18

categories: blog

tags: [递归错误,py,python,MaximumRecursion]

description: Pyinstaller 打包成独立软件的时候递归深度报错RecursionError maximum recursion depth exceeded 解决方案。

报错:Pyinstaller maximum recursion depth exceeded Error Resolution

概述

我用 python 编写了一个小程序,用于解决以“解一元三次方程”为核心的问题。具体是在已经知道了一元三次方程的各个阶的系数值以及 y 值,求 x 值。写成的代码可以在 python 环境中运行,但是无法在没有安装 Python 解释器的电脑上运行。因此,我需要将py 文件打包成可执行文件(exe),以供没有安装 python 解释器的同事们来用。但是在生成 exe 的过程中遇到了若干问题,通过检索和综合别人的解决方案,最终解决了这些问题。

程序编制和运行环境

我有两台电脑三套系统, MACpro-64位(另装了 win7的32位虚拟系统)和 ThinkPad 的Win7-64位,分别装上了 Anaconda 集成开发环境。

报错内容以及解决方法

递归深度报错

使用 Pyinstaller打包成独立软件的时候“递归深度报错”,报错“RecursionError: maximum recursion depth exceeded”

解决思路:

首先,看到递归深度错误,我首先想到的是代码中可能存在 Python 系统能解决但是生成 exe 无法解决的问题,所以才出现递归错误。我上网搜索关键词“Python + maximum recursion depth exceeded”,http://stackoverflow.com上点赞较多的人所说的解决方案是增加递归深度设定(python 默认的递归深度是1000?),具体的方法是:

import sys

sys.setrecursionlimit(10000) # 10000 is an example, try with different values

然而,没什么用。我甚至将这个递归深度增加到10亿次,到达了程序的设计边界,依然不行。

难道是代码本身错误?但是 python 自己却认呢?Why 啊?

抱着谨慎的态度,我以此检查数据类型,

for i in range (0,8):

d = solveset(TA0 + TA1x + TA2(x2) +TA3*(x3) - 1/(273.15+T[i]), x) # 核心计算公式。使用T[i]从T这个数组中按照索引取出数据。

d1,d2,d3 = d # 将数组d进行切片。

d1=float(d1)# 新增加20180612,将sympy 内嵌的float类型装换位通用的 float 类型。

N = 2.718281825**d1 #转换出N值

print (round(N))# "N值为:"

终极解决方案

降级 Python3.6.4→Python3.5.5)+Pyinstaller3.3.1。

使用 Mac-Win7-32内装的Anaconda集成系统的Environments中,另建立一个环境PY35, 其中出了安装了 Python3.5.5之外,还单独安装了 sympy(安装具体包的方法请到 Anaconda官方网站上查看,使用官方命令进行安装)。通过降级的 Python,在Terminal中打开程序所在的文件夹,使用Pyinstaller yourscriptname.py的方法,进行打包程序,在 dish 文件夹下面有一个单独的文件夹叫yourscriptname,里面有一大堆文件,其中有一个文件是.exe文件,其他文件都是支持性的文件,双击 exe 文件就可以在window7下运行了。我这样打包出来的程序没有问题,但是网上另外推荐里一种打包成一个文件而不是一个文件包的方法,还是使用'Pyinstaller -F yourscriptname.py'的方法制作成了一个 单独exe 文件,如果希望让图标 ICO 好看的话,就在这个 py 文件下,存放一个myico.ico文件,在打包的时候输入'Pyinstaller -F -i myico.ico yourscriptname.py',然后就生成了独立的带有漂亮的图标的一个独立程序了。但是我发现这样的程序在安装了 python的程序里运行没有问题,但是在没有安装 python 的电脑里会报错“无法定位程序输入点 GetFinalPathNameByHandleW 于动态链接库 KERNEL32.dll上”。

参考来源:

无法定位程序输入点报错

接上面话题,生成了独立的 exe 程序之后,在其他电脑上运行,报错“无法定位程序输入点 GetFinalPathNameByHandleW 于动态链接库 KERNEL32.dll上”。也就是说,我生成的这个独立的 exe 文件可能并没有打包完全,里面缺少 dll 控件。如果仅仅是为了用的话,dish 文件夹下由pyinstaller系统生成了‘单独的文件夹yourscriptname中 exe’可以直接用了。如果非要生成一个独立的 exe 文件的话,我想这个是库中的文件包打包不全造成了,记得网上有一个说法是继续加一个参数-p(path)……

{ }由于时间有限,暂时不深究,此处刨坑,等来日再解决。

LOG

20180614 下午念起

20180615 上午用了一小时左右敲了出来。

本文由博客群发一文多发等运营工具平台 OpenWrite 发布

python3打包成exe运行 无法定位程度输入点_Pyinstaller递归错误解决方案相关推荐

  1. 新win7系统死机,打开驱动精灵就卡住,解决方案 安装戴尔DELL Optilex 7040 USB驱动时提示无法定位程序输入点 kernel32.dll,解决方案

    新win7系统死机,打开驱动精灵就卡住,解决方案 安装戴尔DELL Optilex 7040 USB驱动时提示无法定位程序输入点 kernel32.dll,解决方案 原因: 新系统打卡驱动精灵卡死其实 ...

  2. python3编译成exe运行_python3.x的程序如何打包成exe可执行文件

    最近有人问我,如何将编写的python打包成exe程序.使用pip install pyinstaller,安装了pyinstaller3.3.在网上找了个教程,将程序打包成了exe文件,但是在执行文 ...

  3. python文件打包成.exe运行文件

    现在用博客的形式记载的,大概也只有IT行业一直持续吧!作为一名IT民工,没有特别多特别深的行业见解,初涉江湖,记录自己走过的路途的风景,日后回望也会觉得清晰:如果有幸能给他人一些启发或者参照,那也算是 ...

  4. python3打包成exe怎么给别人用_pyinstaller 打包python文件成.exe程序

    使用pycharm写好的代码,每次都要使用pycharm来执行比较麻烦,打包成.exe程序后可以直接运行,还可以发到别的电脑上执行,比较方便. 1.打开cmd命令提示符窗口,cd到pip.exe所在的 ...

  5. 关于Unity3D打包成exe运行后资源无法成功加载的解决方法

    报错信息:You are tring to load data from a www stream which had the following error when downloading cou ...

  6. pygame 实现 flappybird 并打包成 exe 运行文件

    前述 本次的 flappybird 小游戏源文件来自于 <零基础学Python>(全彩版),本次的实现是在此基础上更改而来,源代码只有一个flappybird.py 文件,主要更改部分为: ...

  7. python3打包成exe把openpyxl和pandas_Python openpyxl、pandas操作Excel方法简介与具体实例...

    本篇重点讲解windows系统下 Python3.5中第三方excel操作库-openpyxl: 其实Python第三方库有很多可以操作Excel,如:xlrd,xlwt,xlwings甚至注明的数据 ...

  8. 将python3.1+pyqt4打包成exe

    将python打包成exe的程序有很多,比如py2exe.PyInstaller等等,但是到目前为止,它们对python3.1支持的都不好,所以这里我要介绍一下cx_freeze 4.2.2,它还能支 ...

  9. py文件打包或apk_Python文件打包成exe很简单,如果安卓手机也能运行的软件你会吗...

    前言 我相信很多小伙伴都知道怎么将Python的文件打包成exe,而且这个也非常的简单,一行代码就能轻松搞定:pyinstaller -F xxx.py 但是如果我们用Python开发一个小游戏或者一 ...

最新文章

  1. SOAMANAGER配置后无法登录问题
  2. python表白程序exe_我喜欢你 抖音表白程序python版
  3. SpringMVC请求处理流程、springMVC工作流程
  4. 干货 | 大牛谈嵌入式C语言的高级用法
  5. 5.26 考试修改+总结
  6. Java ClassLoader基础及加载不同依赖 Jar 中的公共类
  7. 阿里月饼事件被辞程序员冤吗?
  8. 不同证券的资产收益率统计(2012-2020年)
  9. 基于 Robot Framework 实现网络自动化测试
  10. 基于springboot网上商城交易平台源码
  11. 跨境电商如何制定社交媒体营销策略?
  12. 跟风“涨价”,品牌老化,为何“0糖”的奥利奥不被消费者买账?
  13. matlab rloess,R语言利用loess如何去除某个变量对数据的影响详解
  14. xb格式数据库迁移处理
  15. ReadFile 函数
  16. 陕西师范大学计算机学院课表,陕西师范大学数学与信息科学学院课程表(一).doc...
  17. springboot高校专业实习管理系统的设计和开发
  18. 基于QT的局域网文件传输系统
  19. PowerBI指标拆解分析可视化
  20. 如何显示密件抄送人员地址_如何在Outlook中使用规则自动密件抄送电子邮件

热门文章

  1. Java23中设计模式(Design Patterns)详解
  2. mongodb插入时,时间差的问题
  3. UITabBarController中自定义UITabBar
  4. 操作符union/union all、intersect、minus、(not)exist
  5. pcDuino上跑 MQ2 Shield
  6. static--静态方法与静态成员
  7. java高级之泛型详解
  8. 康乐主机系统怎么安装php,Kangle EP面板详细安装说明
  9. K-SVD字典学习算法
  10. 为什么家里pm25比外面高_自己在外面花天酒地,不舍得为妻子花一分钱,这样男人有多可恨?...