2017-02-08 2 views
0

Py_Initialize()を使用して、PythonインタプリタをC++プログラムで開始することができます。 しかし、関数は何も返しませんので、別のプログラムで同じインタプリタを使用することはできません。 1つのC++プログラムでPy_Initialize()を呼び出す方法はありますか?インタプリタを永続化し、別のC++プログラムで使用します(Py_Initialize()を再度呼び出さずに)?C++でPythonを埋め込む:インタプリタの実行間の永続性

編集:具体的には、Pythonインタプリタのインスタンスを取得し、別の実行にパラメータとして渡してPythonスクリプトを実行するための方法がありますか?

+0

異なるプログラムの場合、それは定義上、同じインタプリタインスタンスではありません。 – spectras

+2

「C/C++プログラム」はありません。あなたが使っている言語を決めてください。それがCの場合は、C++タグを削除します。 – Lundin

答えて

1

いいえ.CPythonインタープリタ自体はそのようには機能しません。明確なインタプリタオブジェクトはなく、ステートフルAPIを持つフローティングのグローバルセットです。さらに悪いことに、Pythonコードは他の任意のライブラリをロードすることができます。そのライブラリの状態は永続化できません(一般的に)。

あなたができることは、既存の変数を削除することです。それはときどきあなたをどこかに近づけることができます。これは実際にホスティングの問題ではなく、Pythonの問題です。しかし、実際にはPythonコードをホストしているCコードが、「実際の」Pythonコードの実行が終了した後に、シリアライゼーションステップを確実に実行するようにすることができます。 How can I save all the variables in the current python session?のようなものが出発点になるかもしれません。

関連する問題