Ich möchte eine C-Bibliothek aus einer Python-Anwendung aufrufen. Ich möchte nicht die gesamte API einschließen, sondern nur die Funktionen und Datentypen, die für meinen Fall relevant sind. Aus meiner Sicht habe ich drei Möglichkeiten:
- Erstellen Sie ein tatsächliches Erweiterungsmodul in C. Wahrscheinlich übertrieben, und ich möchte auch den Aufwand für das Erlernen des Schreibens von Erweiterungen vermeiden.
- Verwenden Sie Cython , um die relevanten Teile aus der C-Bibliothek für Python verfügbar zu machen.
- Machen Sie das Ganze in Python und
ctypes
kommunizieren Sie mit der externen Bibliothek.
Ich bin mir nicht sicher, ob 2) oder 3) die bessere Wahl ist. Der Vorteil von 3) ist, dass ctypes
es Teil der Standardbibliothek ist und der resultierende Code reines Python wäre - obwohl ich nicht sicher bin, wie groß dieser Vorteil tatsächlich ist.
Gibt es bei beiden Möglichkeiten weitere Vor- und Nachteile? Welchen Ansatz empfehlen Sie?
Bearbeiten: Vielen Dank für all Ihre Antworten, sie bieten eine gute Ressource für alle, die etwas Ähnliches tun möchten. Die Entscheidung muss natürlich noch für den Einzelfall getroffen werden - es gibt keine Antwort auf die Frage "Das ist das Richtige". Für meinen eigenen Fall werde ich wahrscheinlich mit ctypes arbeiten, aber ich freue mich auch darauf, Cython in einem anderen Projekt auszuprobieren.
Da es keine einzige wahre Antwort gibt, ist es etwas willkürlich, eine zu akzeptieren. Ich habe mich für die Antwort von FogleBird entschieden, da sie einen guten Einblick in ctypes bietet und derzeit auch die Antwort mit der höchsten Bewertung ist. Ich empfehle jedoch, alle Antworten zu lesen, um einen guten Überblick zu erhalten.
Danke noch einmal.