Seite 1 von 1

Library includen

Verfasst: Dienstag 12. Dezember 2006, 10:36
von antaeus
Ich bin ziemlich sicher, dass meine Frage hier schon irgendwer gestellt und auch beantwortet bekommen hat, aber ich finde den entsprechenden Thread bzw. die Info an sich im Netz nicht, da jede Suche enorme Mengen von wenig passenden Hits zurück gibt...

Mein Problem: Ich möchte eine library (libosip - http://www.gnu.org/software/osip/doc/html/) in ein eigenes Skript includen und verwenden. Ich weiß nur nicht, ob es generell möglich ist libraries, die nicht in Python geschrieben sind, zu includen. Falls das möglich ist, weiß ich nicht wie ich das denn bewerkstellige.

Git es zu diesem Thema evtl. ein Tutorial oder etwas dergleichen?

Viele Grüße & Danke für eure Antworten!

Verfasst: Dienstag 12. Dezember 2006, 10:49
von capsule5
Auszug aus Python Library Reference:
New in version 2.5.
ctypes is a foreign function library for Python. It provides C compatible data types, and allows to call functions in dlls/shared libraries. It can be used to wrap these libraries in pure Python.
http://docs.python.org/dev/lib/module-ctypes.html
http://python.net/crew/theller/ctypes/

Gruß
Christoph

Re: Library includen

Verfasst: Dienstag 12. Dezember 2006, 10:52
von Rebecca
antaeus hat geschrieben:Ich weiß nur nicht, ob es generell möglich ist libraries, die nicht in Python geschrieben sind, zu includen. Falls das möglich ist, weiß ich nicht wie ich das denn bewerkstellige.
Klingt, als suchst du nach ctypes. Siehe z.B. auch diesen Thread:
http://www.python-forum.de/topic-7814.html

Verfasst: Dienstag 12. Dezember 2006, 11:02
von CM
Hoi,

nein, ich finde er es klingt, als ob nach SWIG gesucht wird. (Tut mir leid, an der Stelle hatte sich der Browser vergallopiert, weswegen hier Gibberish stand.) Oder ggf. auch boost python, was aber nicht so einfach zu nutzen ist.
Der Vorteil beider gegenüber ctypes ist definitiv, daß man sich die Arbeit nur einmal macht - Veränderungen in der Library sind dann wesentlich leichter wieder zu übernehmen.

HTH
Christian

edit: Einmal neu angefangen wegen Browserproblem.

Verfasst: Dienstag 12. Dezember 2006, 13:35
von sunmountain
CM hat geschrieben:Hoi,

nein, ich finde er es klingt, als ob nach SWIG gesucht wird. (Tut mir leid, an der Stelle hatte sich der Browser vergallopiert, weswegen hier Gibberish stand.) Oder ggf. auch boost python, was aber nicht so einfach zu nutzen ist.
Der Vorteil beider gegenüber ctypes ist definitiv, daß man sich die Arbeit nur einmal macht - Veränderungen in der Library sind dann wesentlich leichter wieder zu übernehmen.

HTH
Christian

edit: Einmal neu angefangen wegen Browserproblem.
ctypes kann man nutzen, wenn es um einzelne Funktionen geht,
z.B. strftime,printf,... o.ä.
Ich würde (auch aus eigener Erfahrung) SWIG nehmen.
Es nimmt einem die ganze Arbeit ab und man hat dann ein
"echtes" Python Modul mit "echten" Python Objekten.
Mit ctypes ist man Gezwungen alle (!) Datenstrukturen aus der C/C++
Bibliothek per Hand nachzubilden und dafür zu sorgen, das die Laufzeitumgebung das mitmacht.
boost.python kenne ich auch aus der Praxis und ich persönlich finde
es ziehmlich kompliziert.
Man muss selbst alle Klassen, die man nutzen will zusätzlich
von den boost.python Klassen erben lassen.
Nicht gerade intuitiv.
Viele Projekte setzen erfolgreich SWIG ein.

Verfasst: Dienstag 12. Dezember 2006, 14:31
von antaeus
Ok, vielen dank für eure Hilfe. Swig klingt gut, das werde ich mir mal anschauen.

:)

Bin mal gespannt, wie ich damit zurecht komme und ob =)