2013-04-30 19 views
7

Mam program C++, który pozwala mi uruchamiać skrypty w języku Python, do których C++ przekazuje dane. Jeśli skrypt w języku Python nie powiedzie się, program C++ wywołuje program , aby umożliwić zbadanie problemu w powłoce interaktywnej. Działa to dobrze, ale pomyślałem: "Byłoby fajnie, gdyby zainstalowany był IPython, mógłbym go użyć w tym przypadku".Osadzanie powłoki IPython w C/C++ - program

Teraz mój problem: wszystko, co znajduję szukając "osadzania ipythona", to instrukcje jak osadzić IPython w programach Python (między innymi http://ipython.org/ipython-doc/dev/interactive/reference.html#embedding-ipython). Próbowałem odtworzyć je na osadzonej zwykłej powłoce Pythona, ale większość z nich zawodzi w jakiś sposób (zazwyczaj z powodu braku sys.argv .... tego, który mogę rozwiązać).

Wszelkie sugestie, jak to zrobić? Moim pierwszym planem byłoby najpierw zaimportować IPython poprzez C-API (ten, który dostałem). Jeśli to się nie uda, użyj "zwykłej" powłoki. Inaczej nazwać IPython.embed() (lub podobną) poprzez PyRun_InteractiveOneFlags

Odpowiedz

0

Czy bierzesz za pomocą python debugger

>>> import pdb 
>>> import yourmodule 
>>> pdb.run('yourmodule.test()') 
+0

a) działa to i tak b) nie jest to, co chcę. Zwykle Workflow to "Błąd skryptu - na przykład" Wymiary macierzy nie zgadzają się ".Sprawdź obszar roboczy, aby zobaczyć, jak naprawić skrypt" i dla tego funkcje IPython (na przykład uzupełnianie Tab) uczyniłoby rzeczy znacznie wygodniejszymi. I muszę to zrobić osadzone w programie C++, ponieważ dane są przekazywane przez program C++ – bgschaid