pyinstaller创建EXE RuntimeError:调用Python对象时超出了最大递归深度 [英] pyinstaller creating EXE RuntimeError: maximum recursion depth exceeded while calling a Python object
问题描述
我正在使用pyinstaller 3.2(通过pip install pyinstaller获得)运行WinPython 3.4.4.3.
I am running WinPython 3.4.4.3 with pyinstaller 3.2 (obtained via pip install pyinstaller).
现在,我有一些非常简单的Qt4代码,我想将其转换为EXE,但遇到了无法解决的问题.
Now I've got some really simple Qt4 code that I want to convert to EXE and I've run into problem that I cannot solve.
代码:
import sys
import math
from PyQt4 import QtGui, QtCore
import SMui
import numpy as np
from scipy.interpolate import InterpolatedUnivariateSpline
class SomeCalculation(QtGui.QMainWindow, SMui.Ui_MainWindow):
def __init__(self):
super(self.__class__, self).__init__()
self.setupUi(self)
self.setWindowTitle('Some Calculation')
self.calculate.clicked.connect(self.some_math)
def some_math(self):
a_diameter=self.a_diameter.value()
b_diameter=self.b_diameter.value()
complement=self.complement.value()
angle=self.angle.value()
preload=self.preload.value()
### ONLY MATH HAPPENS HERE also defining X and Y ####
interpolator = InterpolatedUnivariateSpline(X, Y)
### MORE MATH HAPPENS HERE ####
self.axial.setText(str(axial))
self.radial.setText(str(radial))
def main():
app = QtGui.QApplication(sys.argv)
window=SomeCalculation()
window.show()
app.exec_()
if __name__=='__main__':
main()
我尝试运行pyinstaller file_name.py
,但我得到了:
I try to run pyinstaller file_name.py
and I'm getting:
RuntimeError: maximum recursion depth exceeded while calling a Python object
现在,如果我发现一些也会影响该问题的东西:
Now if there's a few things that I have found out that also affect the issue:
1)如果我将这一行注释掉:from scipy.interpolate import InterpolatedUnivariateSpline
1) If I comment out this line: from scipy.interpolate import InterpolatedUnivariateSpline
2)从另一个使用Scipy.Interpolate(但仍然是RBS)的脚本创建EXE文件-就像一个超级按钮.
2) Creating EXE file from another different script that uses Scipy.Interpolate (RBS, but still) - works like a charm.
3)如果我尝试使用WinPython 3.5.1.1 + pyinstaller将其转换为EXE,则使用相同的方式,并且它与3.2的版本相同-它将生成我的exe文件,没有问题.
3) If I try to convert it to EXE using WinPython 3.5.1.1 + pyinstaller obtained the same way, and it's the same 3.2 version of it - it generates my exe file no problems.
我想了解在原始情况下是什么原因导致的错误,但不幸的是,我无法在google上找到任何答案,我可以找到的大多数修补程序都与matplotlib有关,而不是与插值有关.
I want to understand what's causing the error in the original case and I cannot find any answer on google unfortunately, most of the fixes I could find were related with matplotlib and not interpolation though.
推荐答案
这对我有用
-
运行pyinstaller并停止它以生成规格文件:
Run pyinstaller and stop it to generate the spec file :
pyinstaller filename.py
应生成扩展名为.spec
的文件
现在将以下行添加到spec文件的开头:
Now add the following lines to the beginning of the spec file :
import sys
sys.setrecursionlimit(5000)
现在使用以下命令运行规范文件:
Now run the spec file using :
pyinstaller filename.spec
这篇关于pyinstaller创建EXE RuntimeError:调用Python对象时超出了最大递归深度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!