我有一个python应用程序,它在python上完美运行,但运行cythonized脚本时出错。使用Cython编译脚本的Python RecursionError
当我用cython编译脚本时,一切都编译好了,我正在用Linux编译Raspberry并在其上运行。
setup.py
from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules=cythonize(["*.py"]),)
然后我运行setup.sh编译和我删除所有的编译*的.py,* .c和* .pyc文件只是为了确保正在运行什么是编译* .so文件。我编译除了mainGUI.py之外的所有东西,它是基于PySide的,它在编译时总是会中断。
setup.sh
然后我跑我的应用程序
sudo python3 mainGUI.py
,一切似乎是确定的GUI显示了,菜单的工作,但是当我阅读终端,我得到这个输出很多次:
RecursionError: maximum recursion depth exceeded while calling a Python object
但我不知道什么script.py扔这个。我已经尝试将一些scripts.py从编译中退出,并让它们以.py(例如mySQLdatabaseScript.py)的形式运行,并且RecursionError的数量减少但未消除。
所以,即使当我的GUI运行,似乎没有错误,我的大部分功能不工作,他们抛出RecursionError。
我读过,我可以增加递归限制
sys.setrecursionlimit(1500)
但我应该在哪里做呢?在mainGUI.py中?或在每个script.py?
有一两件事,我可以在这个过程中看到的是,用Cython不是让我的应用程序对内存的优化:
嗨,是的,问题似乎是坡道。我们遇到的问题是,所有信号都适用:/。我们的项目已完成,切换到PyQt将涉及很多工作:(但感谢您的建议,我们会考虑它:) – EinSoldiatGott
我的代码有1500行。 我在30分钟内将它转换为pyQt。 小部件和方法的名称是相同的。 它工作得更快。 – Ando
真的吗?我正在尝试。开发者的许可证费用为500美元。 – EinSoldiatGott