Python mit Anwendung mitliefern

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
compyler
User
Beiträge: 2
Registriert: Samstag 11. August 2012, 14:10

Hallo,

ich habe in C++ eine Anwendung geschrieben, die sich sowohl für Linux als auch Windows kompilieren lässt.
Aus dem C++ Code heraus rufe ich Python Funktionen aus verschiedenen selber geschriebenen Skripten auf (mit PyEval_CallObject etc.).
Es geht jetzt darum, wie ich meine Anwendungen so zusammenpacke, dass sie auf anderen Rechnern läuft.
1) Da ich ja gegen Python linke, muss ich wohl die Python Libs (Python2.6.so und .dll unter Windows etc.) mitliefern, oder?
2) Ich habe ferner noch ein paar .py Skripte als Teil meiner Anwendung, die Stand alone laufen müssen. Also muss ich auch den Python Interpreter mitliefern. Wie mache ich das am besten? Ich muss für 1) ja sowieso die Python .so/.dll mitliefern, kann der mitgelieferte Interpreter die dann gleich nutzen?

Danke für jede Hilfe!
bremer
User
Beiträge: 109
Registriert: Sonntag 25. Mai 2008, 00:13

Was Punkt zwei betrifft, könnte dir cx_Freeze helfen.

http://cx-freeze.sourceforge.net/
lunar

@compyler:

Ad 1) Selbstverständlich musst Du alle Bibliotheken, gegen die Du linkst, auch mitliefern.

Ad 2) Was meinst Du mit "stand alone"? Soll der Benutzer diese Skripte unabhängig (i.e. aus dem Startmenü heraus) starten können?
compyler
User
Beiträge: 2
Registriert: Samstag 11. August 2012, 14:10

Ok, ich habe mir gerade Python 2.7.3 unter C:\Python27 (nennen wir das Verzeichnis $PyDir) auf Windows installiert.

Jetzt möchte ich aus meiner C++ Anwendung eine Python Funktion aus einer .py Datei aufrufen. Was muss ich dazu jetzt alles machen? $PyDir/include als Include Pfad setzen und im C++ Code Python.h inkludieren und dann lediglich pythonlib27.lib dazulinken? Reicht das?

Was ich nicht ganz verstehe: Im $PyDir/dll Ordner liegt bei mir nur diese dll: sqlite3, tcl85, tclpip85 und tk85. Wieso liegt da keine python.dll? Irgendwas muss ich dann doch mitliefern auf einen anderen Rechner, damit meine C++ Anwendung läuft.

Kleine Nebenfrage: Auf Linux gibt es keinen Binary Installier, oder? Sprich man MUSS Python immer aus Source bauen? Und für Windows gibt es keinen Source und NUR Binariy Python Installer?
lunar

@compyler: Das reicht… wenn Du es richtig umsetzt. Eine python.dll muss es nicht geben. Die LIB-Datei kann auch zu einer statischen Bibliothek gehören.

Unter Linux installiert man Python üblicherweise aus den Paketquellen der entsprechenden Distribution, anstatt es aus dem Quelltext zu kompilieren. Möchte man unter Windows aus dem Quelltext kompilieren, kann man dazu einfach die bereit gestellten Quelltext-Archive nutzen.
Antworten