2017-02-11 4 views
0

Ich habe das Python documentation chapter gelesen, das erklärt, wie man den Python-Interpreter in eine C/C++ - Anwendung einbettet. Außerdem habe ich gelesen, dass Sie Python-Module entweder systemweit oder lokal für einen bestimmten Benutzer installieren können.Vollständig eingebettet SymPy + Matplotlib + andere innerhalb einer C/C++ - Anwendung

Aber angenommen, meine C/C++ - Anwendung wird einige Python-Module wie SymPy, Matplotlib und andere verwandte Module verwenden. Und nehmen wir an, Endbenutzer meiner Anwendung haben keine Python-Installation auf ihren Rechnern.

Das bedeutet, dass meine Anwendung mit "pseudo-installed" Modulen innerhalb ihrer Datenverzeichnisse ausgeliefert werden muss (genauso wie die Anwendung einen Ordner für Symbole und andere Ressourcen hat, muss sie ein Verzeichnis für Python-Module haben). Eine weitere Anforderung ist, dass der absolute Pfad meiner Anwendungsinstallation nicht festgelegt ist: Der Benutzer kann das Anwendungspaket in ein anderes Verzeichnis "ziehen" und es läuft dort gut (es funktioniert bereits so, aber vor dem Einbetten von Python darin, und ich wünsche, dass es nach der Einbettung von Python so weiter geht.

Ich denke, meine Frage könnte prägnanter ausgedrückt werden: "Wie kann ich Python verwenden, ohne Python zu installieren, weder systemweit noch benutzerweit?"

Antwort

0

Es gibt verschiedene Möglichkeiten, wie Sie könnte versuchen, dies zu tun, aber keiner von ihnen sind die allgemeinen Lösungen. Vom (docs):

5,5. Einbetten von Python in C++

Es ist auch möglich, Python in ein C++ - Programm einzubetten; Wie das genau gemacht wird, hängt von den Details des verwendeten C++ Systems ab; Im Allgemeinen müssen Sie das Hauptprogramm in C++ schreiben und den C++ - Compiler verwenden, um Ihr Programm zu kompilieren und zu verknüpfen. Es ist nicht notwendig, Python selbst mit C++ neu zu kompilieren.

Dies ist der kürzeste Abschnitt in dem Dokument, und entspricht in etwa: ‚als Übung für die reader`. Ich glaube nicht, dass Sie irgendwelche einfachen Lösungen finden werden.

Verwenden pyinstaller die Stücke zu sammeln:

Das bedeutet, dass meine Anwendung muss mit „pseudo-Installation“ Module, innerhalb dessen Datenverzeichnisse (ebenso wie die Anwendung verfügt über einen Ordner für Symbole versenden und andere Ressourcen, muss es ein Verzeichnis für Python-Module haben).

Wenn ich dieses Problem angehen wollte, würde ich pyinstaller als Basis verwenden. (Disclosure: Ich bin ein gelegentlicher Beiträger). Eine der Hauptfunktionen von pyinstaller besteht darin, alle benötigten Ressourcen für ein Python-Programm zu sammeln. Im onedir Modus sind alle Dinge, die benötigt werden, um das Programm laufen zu lassen, in einem Verzeichnis zusammengefasst.

Sie können dieses Tool in Ihr Erstellungssystem aufnehmen und alle benötigten Teile in Ihr python Datenverzeichnis in Ihrem Build-Baum einfügen.

Verwandte Themen