2013-04-30 9 views
7

私は、C++がデータを渡すPythonスクリプトを実行できるようにするC++プログラムを持っています。 Pythonスクリプトが失敗した場合、C++プログラムはPyRun_InteractiveLoopを呼び出して、対話型シェルで問題を調査できるようにします。これは問題なく動作しますが、「IPythonがインストールされていれば、私はそれを使用することができますか?」と思ったのです。C/C++ - プログラムにIPython-shellを埋め込む

私の問題は、「ipython embedding」を探すときに、IPythonをPythonプログラムに埋め込む方法です(他のものの中では、http://ipython.org/ipython-doc/dev/interactive/reference.html#embedding-ipythonの中にあります)。私は組み込みの通常のPythonシェルでこれらを再現しようとしましたが、それらのほとんどは何らかの方法で失敗します(通常はsys.argvがないために解決できます)。

どのようにすればいいですか?私の最初の計画は、最初にIPythonをC-API経由でインポートすることでした(私がカバーしたもの)。それが失敗した場合は、 "通常の"シェルを使用してください。それ以外の場合はPyRun_InteractiveOneFlags

答えて

0

経由IPython.embed()(または類似)を呼び出して、あなたはa)は、このb)は、それは私が欲しいものではありませんとにかく働くpython debugger

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

を使用して考えがあります。通常のワークフローは「スクリプトが失敗します。たとえば、「Matrixのディメンションに同意しません」などです。スクリプトの修正方法を確認するためにワークスペースを検査します.IPythonの機能(Tab-completionなど)を使用すると便利です。私はC++プログラムに埋め込まなければなりません。なぜなら、データはC++プログラムに渡されるからです – bgschaid

関連する問題