2017-12-21 3 views
0

Der Versuch, einen Python-Interpreter in eine C++ - Anwendung einzubetten. Dachte, es wäre einfach, aber ich habe Schwierigkeiten, denke ich mit der Verknüpfung. Das einzig Ungewöhnliche ist, dass ich versuche, ein spezifisches Anaconda-Paket zu verwenden. Die einfache C++ Code ist:Einbetten von Python in C/C++ von Anaconda PyThreadState_Get: kein aktueller Thread

# include <Python.h> 

int main() 
{ 
    printf("before initialize"); 
    Py_Initialize(); 
    printf("after initialize"); 
    PyRun_SimpleString("print('Hello from Python')"); 
    Py_Finalize(); 
    return 0; 
} 

zu kompilieren i verwenden:

gcc pythonTest.cc -I/path/to/anaconda/include/python3.6m -L/path/to/anaconda/lib/python3.6/config-3.6m-x86_64-linux-gnu -lm -lpthread -ldl -lutil -lpython3.6m -o pytest 

Es ist zu kompilieren, aber wenn ich das einfache Programm ausführen ich erhalte:

Fatal Python error: PyThreadState_Get: no current thread 

before initializeAborted 

Ich habe habe die Pfad, den das Programm sieht, und es enthält den Pfad zu der gleichen ausführbaren Python-Datei, wie ich sie mit den Includes und Libs angegeben habe. Einige Suchvorgänge scheinen jedoch darauf hinzudeuten, dass die Python-Version irgendwie anders aufgerufen wird als die, mit der verlinkt wurde. Ich weiß nicht genau, wie ich das herausfinden soll. mit kompilieren

+0

ich genau das gleiche Problem haben. Hast du es jemals geschafft, das zu lösen? – kdheepak

Antwort

0

Versuchen:

gcc pythonTest.cc -I/$HOME/anaconda3/include/python3.6m -lpython3.6m 
Verwandte Themen