提问人:mahaha3211 提问时间:11/15/2023 最后编辑:mahaha3211 更新时间:11/15/2023 访问量:53
使用 Cython 运行已编译的 pyd 文件时,出现“takes exactly 1 positional argument (2 given)”错误 [duplicate]
When running a compiled pyd file with Cython, a "takes exactly 1 positional argument (2 given)" error occurs [duplicate]
问:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
class ExampleApp(QWidget):
def __init__(self):
super().__init__()
# UI 초기화
self.init_ui()
def init_ui(self):
# 버튼 생성
self.btn = QPushButton('click', self)
self.btn.clicked.connect(self.on_button_click)
# 레이아웃 생성
layout = QVBoxLayout()
layout.addWidget(self.btn)
# 윈도우에 레이아웃 설정
self.setLayout(layout)
# 윈도우 설정
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('pyqt5 example')
self.show()
def on_button_click(self):
print('clicked.')
app = QApplication(sys.argv)
ex = ExampleApp()
sys.exit(app.exec_())`
test.py
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
from Cython.Build import cythonize
ext_modules = [
Extension("test", ["test.pyx"]),
]
setup(
name='test',
ext_modules=cythonize(ext_modules, compiler_directives={'language_level': "3"}),
zip_safe=False
)
编译 setup.py
__import__("test")
main.py
上面的代码是我写的一个例子。使用 Cython 将此代码写入 pyd 和 C 文件后,我遇到了一个 TypeError:on_button_click() 在尝试运行 pyd 文件时正好接受 1 个位置参数(给定 2 个)。我已经尽一切努力寻找原因,但无法弄清楚。有谁知道原因?我正在使用 Windows 10 64 位、Python 3.8.10 和 Visual Studio Community 2022。
我尝试将 Visual Studio 2019 用于不同的 MSVC 版本,但它仍然不起作用。我还试图降级 Cython,怀疑这可能是问题所在,但这也不起作用。虽然我没有使用更高版本的 Python 进行测试,但我使用的是 Python 3.8.10,因为它需要在 Windows 7 上运行。
答: 暂无答案
评论
on_button_click
checked