Einbetten von Python3 in die Standardbibliothek

9

Ich versuche Python in eine C ++ - App (letztlich Multiplattform) einzubetten.

Es ist wichtig, dass meine App eine eigene Python-Implementierung enthält (genau wie bei blender), so dass sie vollständig eigenständig ist. (Sonst wird es ein Konfigurations-Minenfeld).

Ich habe zwei Möglichkeiten:

  1. Es wurde versucht, Python3 ohne die Standardbibliothek einzubetten (die ich hier )

  2. Es wurde versucht, Python3 mit der Standardbibliothek einzubetten.

Was ist für (2) erforderlich?

Mit diesen Informationen wäre ich in der Lage, die Vorteile jedes Ansatzes mit dem Aufwand für die Einrichtung zu vergleichen.

Mein eingebettetes Python wird für mich (und nicht für das Scripting von Benutzerlandschaften) verwendet - hauptsächlich für die Steuerung von Fluss / Spiellogik. Ich werde sehr wenig von der Standard-Bibliothek brauchen - vielleicht kann ich das auf 0 reduzieren, indem ich bei Bedarf in C ++ zurückwechsle - zum Beispiel, wenn ich eine Zufallszahl brauche, kann ich eine C ++ - Routine erstellen und auf diese von Python zugreifen. Ich habe das alles abgedeckt.

Es sieht jedoch so aus, als ob selbst eine minimale Installation einige stdlib-Komponenten enthalten müsste, was die Frage aufwirft: "Wenn ich einige hinzufügen muss, ist es vielleicht besser, alle einzuschließen!"

    
P i 11.01.2016, 15:15
quelle

3 Antworten

0

Ich nehme an, dass Sie bereits überprüft haben, wie Sie Python in eine andere Anwendung einbetten ( hier ) sehe etwas, das die Einbettung von Python2 abdeckt, wird aber meiner Meinung nach auch für Python3 gelten)

Es gibt verschiedene Arten der Einbettung:

  • Sehr hohe Einbettung
  • Über eine sehr hohe Einbettung hinaus
  • Pure Embedding
  • Einbetten von Python in C ++

Da Ihre Frage relativ zu "Einbetten von Python in C ++" lautet, können Sie Folgendes lesen:

  

Es ist auch möglich, Python in ein C ++ - Programm einzubetten; genau wie   Dies ist abhängig von den Details des verwendeten C ++ Systems ; im   Allgemein müssen Sie das Hauptprogramm in C ++ schreiben und das   C ++ Compiler zum Kompilieren und Verknüpfen Ihres Programms. Es besteht keine Notwendigkeit zu   kompilieren Sie Python selbst mit C ++.

Als eine Hand sagten Sie " (letztlich Multiplattform) C ++ App ", und auf der anderen Seite haben Sie " genau, wie dies getan wird, hängt von den Details des verwendeten C ++ Systems ab ", können Sie dann weitere Details des verwendeten C ++ Systems erklären?

Hier finden Sie auch Tipps hier zur Verwendung von pybind11 Modul oder ein anderes alte Seite , die behandeln, wie man Python einbindet und Module in C / C ++ importiert (python2.6, aber ich hoffe, dass Sie Inspiration mit finden können)

Zum Schluss:

  

Sie brauchen natürlich Entwicklungspakete für Python   das Python-Include-Verzeichnis

    
A STEFANI 04.04.2017 23:09
quelle
-1

Sie suchen Boost.Python !

Es ist eine C ++ - Bibliothek , die nahtlose Interoperabilität zwischen C ++ und der Python-Programmiersprache ermöglicht. Meiner Meinung nach sollte dies ausreichen, es sei denn, Sie versuchen etwas anderes zu erreichen .

Es hat auch einen Mechanismus für die Einbettung des Python-Interpreters in C ++ - Code und man kann sich auf dieser Link (URL ist nicht release-spezifisch), um die Möglichkeiten zu erkunden.

P.S. Ich glaube weniger daran, das Rad neu zu erfinden und mehr in die Wiederverwendbarkeit.

    
Javed Mulani 22.02.2017 22:24
quelle
-1

Da dies nicht wirklich eine Antwort hat, werde ich dies für die Nachwelt anbieten. Ich habe auch keinen Zugang zu einem Mac, also könnte es für dich ein wenig anders sein als unter Linux. Außerdem müssen die erforderlichen Abhängigkeiten installiert sein, damit dies funktioniert, aber das ist normalerweise einfach genug, um herauszufinden.

Erstellen Sie ein Arbeitsverzeichnis

%Vor%

Laden Sie die Python-Quelle herunter

%Vor%

Erstellen Sie ein Installationsverzeichnis für Python

%Vor%

Extrahiere die heruntergeladenen Quelldateien

%Vor%

Geben Sie das neu erstellte Quellverzeichnis ein

%Vor%

Konfigurieren Sie Python für die Installation in unserem Installationsverzeichnis

%Vor%

Erstelle und installiere Python

%Vor%

Gehen Sie zurück zu Ihrem Arbeitsverzeichnis

%Vor%

Erstellen Sie ein neues Verzeichnis PYTHONHOME , in dem sich die Bibliothek befinden wird

%Vor%

Kopieren Sie die Python-Bibliothek in unser neues Home-Verzeichnis

%Vor%

Erstellen Sie eine neue C ++ Quelldatei (embeddedpython.cpp) mit dem folgenden Code aus dem PYTHONHOME muss so gesetzt sein, dass sie darauf zeigt, bevor ein Python-Code ausgeführt wird.

    
Alden 14.04.2017 22:12
quelle