In einem Open-Source-Projekt 1 haben wir Python/Cython und C/C++ - Module mit einer C++ - Bibliothek mit der Python C-API gemischt. Die API hat nur einige Funktionsnamen von 2 auf 3 geändert. Angenommen, die Bibliothek wird ohne diese Funktionen geschrieben. Wird es mit Python3 verlinkt, wenn es mit Python2 kompiliert wird und umgekehrt? Wird dies durch Makros in den API-Headern verhindert?binär mit Python C API Version 2 und 3
Eine Bibliotheks-Binärdatei, die mit beiden verknüpft werden kann, würde uns große Verpackungsschwierigkeiten ersparen.
Die Namen einiger ziemlich grundlegender Funktionen haben sich geändert (z. B. die Modulinitialisierung, denke ich), hauptsächlich um Sie daran zu hindern. – DavidW
Die API ist relativ stabil, das A * B * I ist nicht. Also müssten Sie pro Python-Version neu kompilieren. Edit: Siehe den Link in @DavidW Kommentar zu Antti Haapala die Antwort unten für weitere Erklärungen zu diesem Thema. – Toby