Library mit Python-Code erstellen [wie unter C]

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
SpatenHausen
User
Beiträge: 1
Registriert: Mittwoch 8. Januar 2014, 12:02

Hallo zusammen,

ich mache mir gerade Gedanken darüber, wie es möglich ist eine Library mit Python zu erstellen. Also nicht in C/C++, sondern in Python.
Der Hintergrund ist, dass ich diese Library ("Funktionen") später gerne unter verschiedenen Sprachen (MathLab, C, Java, ...) verwenden möchte.

Hat da jemand Erfahrung mit und wenn ja, wie gehe ich da vor?

Danke schon mal!
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@SpatenHausen
Das, was man unter C als libraries kennt, nennt sich unter Python Modul. Und nein, ein solches lässt sich nicht einfach mit einer anderen Sprache nutzen.

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

mutetella hat geschrieben:Und nein, ein solches lässt sich nicht einfach mit einer anderen Sprache nutzen.
Wie kommst Du darauf? Ich kann das Modul mittels Jython unter der JVM sehr wohl in einem anderen Programm basierend auf der JVM nutzen. Ich kenne den Stand bei IronPython nicht, aber auch damit wäre es im CLI-Umfeld verwendbar.

Du kannst ja auch nicht eine C-Lib so ohne weiteres überall verwenden - zugegebener Maßen dürfte es dafür jedoch weit mehr Wrapping-Technologien geben ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Um tatsächlich eine Library für C zu bekommen, kannst Du einen kleinen C-Wrapper schreiben, der die Python-Engine einbindet.
Für Matlab bietet sich eher eine NonRemote-Procedure-Call Client-Server-Lösung an, wo Du Dir ein kleines Protokoll definierst, mit dem Python und Matlab über Pipes kommunizieren können (G**gle liefert da ein paar Treffer).
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@Hyperion
Das ist mir schon klar und Du hast natürlich Recht. Ich habe nur nicht den Eindruck, dass die Frage ist, mit welchen Hilfsmitteln man ein Pythonmodul unter anderen Sprachen verwenden kann sondern danach, wie ich ein Modul (library) erstelle und das dann "einfach so" auch mit anderen Sprachen nutzen kann.

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

mutetella hat geschrieben:Das ist mir schon klar und Du hast natürlich Recht. Ich habe nur nicht den Eindruck, dass die Frage ist, mit welchen Hilfsmitteln man ein Pythonmodul unter anderen Sprachen verwenden kann sondern danach, wie ich ein Modul (library) erstelle und das dann "einfach so" auch mit anderen Sprachen nutzen kann.
Die Wahrheit ist, natürlich, irgendwo in der Mitte. Man kann Python-Funktionen nicht ohne weiteres aus anderen Sprachen nutzen, außer in gewissen fällen. Etwa wenn man wie Sirius3 vorgeschlagen hat die libpython einzubinden und mittels der den Code auszuführen. Oder sich ein Protokoll wie XML-RPC, JSON-RPC, Thrift oder wiesiealleheißen zu nutzen. Um das optimale Vorgehen rauszufinden müsste der OP wohl mehr Details sagen was er sich da vorgestellt hat.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten