我有一個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