Best Practices für Python-Bibliotheken

8

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.

  1. Geben Sie die Bindungen mit einer einfachen setup.py-Datei selbst frei und geben Sie Anweisungen zum Erstellen, Herunterladen und Installieren der C-Bibliothek in der Dokumentation an.
  2. Geben Sie die Bindungen zusammen mit der ursprünglichen Bibliotheksquelle frei und stellen Sie ein setup.py bereit, das die Kompilierung und Installation der C-Bibliothek übernimmt. Das ist offensichtlich mehr Arbeit für mich.
  3. Geben Sie einfach die .py-Datei frei und lassen Sie die Benutzer sich Gedanken über Installation und Abhängigkeiten machen.

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?

    
Chinmay Kanchi 08.03.2011, 20:26
quelle

1 Antwort

2

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%     
samplebias 08.03.2011, 21:31
quelle

Tags und Links