Ich habe Python-Bindungen mit ctypes für die Einheitenbibliothek geschrieben. Die Bindungen selbst sind nur ~ 100 Zeilen Python. Die Bibliothek hat eine unnötige (für die Zwecke der Python-Bindungen) Abhängigkeit von tcl, und das configure-Skript schlägt fehl, wenn tcl nicht vorhanden ist. Die Bibliothek ist jedoch in Ordnung mit gcc -Wl,-soname,units.so -o units.so -fPIC -shared units.c
.
Ich möchte jetzt diese Bindungen freigeben. Es gibt drei Möglichkeiten, dies zu tun.
Wenn ich Option 2 wähle, wo soll ich die Bibliothek hinstellen? Soll ich es in das gleiche Verzeichnis wie die .py-Datei stellen, damit ich lib_name = CDLL('./units.extension')
annehmen kann, oder sollte ich es in ein Verzeichnis einfügen, das sich im Linker-Pfad befindet (wie / lib)? Wie wird dies normalerweise für Windows-Rechner gehandhabt, die a) keinen C-Compiler haben und b) keinen Standardplatz haben, um gemeinsam genutzte Bibliotheken zu platzieren?
Welche dieser Optionen ist die bevorzugte und was soll ich in Windows tun?
Es scheint, dass die units
-Bibliothek seit über 5 Jahren nicht mehr geändert wurde, daher könnte Option 2 die beste sein. Es ist auch unwahrscheinlich, dass eine der Hauptdistributionen es packen wird (ich kann es nicht in Ubuntu Lucid oder Macports zum Beispiel finden).
Kopieren Sie beispielsweise units.c und units.h in Ihr Projekt und erstellen Sie ein setup.py, um es zusammen mit Ihren Bindungen zu kompilieren und bereitzustellen:
%Vor%