Ich versuche eine C-Erweiterung für Python zu schreiben. Mit dem Code (unten) bekomme ich die Compiler-Warnung:
%Vor%Und es schlägt zur Laufzeit mit diesem Fehler fehl:
%Vor%Ich habe buchstäblich stundenlang nach einer Lösung ohne Freude gesucht. Ich habe mehrere geringfügige Änderungen an der Syntax versucht, ich habe sogar einen Beitrag gefunden, der andeutet, dass die Methode veraltet ist. Ich finde jedoch keinen Ersatz.
Hier ist der Code:
%Vor%Wenn es hier hilft, ist meine setup.py:
%Vor%Und der Testcode in test.py:
%Vor%Jede Hilfe wäre sehr, sehr geschätzt.
Der Code, den Sie haben, würde in Python 2.x funktionieren, aber Py_InitModule
wird in Python 3.x nicht mehr verwendet. Heutzutage erstellen Sie eine PyModuleDef
-Struktur und übergeben dann einen Verweis darauf zu PyModule_Create
.
Die Struktur würde wie folgt aussehen:
%Vor% Und dann würde Ihre PyMODINIT_FUNC
Funktion wie folgt aussehen:
Beachten Sie, dass der Name der Funktion PyMODINIT_FUNC
die Form PyInit_<name>
haben muss, wobei <name>
der Name Ihres Moduls ist.
Ich denke, es wäre lohnenswert, wenn Sie Erweitern in der Dokumentation zu Python 3.x lesen. Es hat eine detaillierte Beschreibung, wie Erweiterungsmodule in modernen Python zu erstellen.
Ich hatte das gleiche Problem mit Py_InitModule (). Ich habe mit den oben genannten Python 3-Dokumenten begonnen, insbesondere mit dem Dokument "Python-Interpreter erweitern und einbetten". Aber das Kapitel dieses Dokuments mit dem Titel "Ein einfaches Beispiel" lässt Details aus. Damit. Ich googelte diesen schlauen Vortrag:
ist in vielerlei Hinsicht besser geeignet für jemanden, der mit Python-C-API-Erweiterungen neu ist ... außer es wurde nicht für Python v3 aktualisiert. Also ... konsultieren Sie die scipy-Vorlesung, die Python-3-Dokumentation und diese StackOverflow-Diskussion, in der Sie die relevanten Informationen für Ihre Bedürfnisse auslesen.
Tags und Links python c python-extensions