У меня есть C ++ — программа, которая позволяет мне запускать Python-скрипты, в которые C ++ передает данные. Если Python-скрипт дает сбой C ++ — программа вызывает PyRun_InteractiveLoop разрешить исследование проблемы на интерактивной оболочке. Это работает хорошо, но я подумал: «Было бы здорово, если бы установлен IPython, я мог бы использовать его в этом случае».
Теперь моя проблема: все, что я нахожу при поиске «встраивания ipython» — это инструкции по встраиванию IPython в Python-программы (среди прочего http://ipython.org/ipython-doc/dev/interactive/reference.html#embedding-ipython). Я пытался воспроизвести их на встроенной обычной оболочке python, но у большинства из них произошел сбой (обычно из-за отсутствия sys.argv …., который я могу решить).
Любые предложения, как это сделать? Мой первый план состоял бы в том, чтобы сначала импортировать IPython через C-API (тот, который я рассмотрел). Если это не удается, используйте «обычную» оболочку. В противном случае вызовите IPython.embed () (или аналогичный) через PyRun_InteractiveOneFlags
Рассматривали ли вы использование отладчик Python
>>> import pdb
>>> import yourmodule
>>> pdb.run('yourmodule.test()')
Других решений пока нет …