【发布时间】:2020-01-05 02:24:10
【问题描述】:
以下非常简单的代码运行良好:python tmpmain.py 会给你一个带有帮助菜单的窗口,而 Help->About 会给你一个消息。但是,一旦我将 tmp.py 转换为扩展名,并将 tmp.py 重命名为 tmp.py.bak 以确保 tmpmain.py 调用已编译的扩展名,python tmpmain.py 将导致 RecursionError: maximum recursion depth exceeded while calling a Python目的。我已经尽可能地简化了代码,希望它可以帮助调试。有什么建议吗?
#tmpmain.py
from tmp import main
if __name__ == '__main__':
main()
和,
#tmp.py
from PySide2.QtWidgets import (QApplication, QMainWindow, QMenu, QMessageBox)
from PySide2.QtCore import Slot
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super().__init__()
self.setupHelpMenu()
def setupHelpMenu(self):
helpMenu = QMenu("&Help", self)
self.menuBar().addMenu(helpMenu)
helpMenu.addAction("&About", self.about)
@Slot()
def about(self):
QMessageBox.about(self, "About", "This is a demo")
import sys
def main():
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
编译tmp.py的命令是:
cythonize -X language_level=3 -i tmp.py
【问题讨论】:
-
在带有 Python 3.7.4 的 Linux (Arch Linux) 中,Cython 0.29.13 和 PySide2 5.13 可以正常工作。即使是简化的代码也会给您带来同样的问题吗?
-
我在Windows 10上:Python 3.7.3,Cython 0.29.13,PySide2 5.12.4,编译器是:Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.22。 27905,我可以正确编译和运行非PySide2测试用例。
-
尝试将 PySide2 版本更新到 5.13
-
Miniconda 3只有5.12.4,让我看看我能做什么。谢谢!
-
我pip安装了pyside2 5.13,python代码依旧可以运行,但是编译后的版本还是有递归错误。