スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

組み込みPythonで文字列からimportする

PyImport_ExecCodeModuleでモジュールを実行した後、importしないと使えない。

#include <Python.h>

int main(void) {
Py_Initialize();

FILE *fp;

const char* module_code =
"class Hello:\n"
" def __init__(self, message):\n"
" self.message = message\n"
" def say(self):\n"
" print 'hello %s' % self.message\n"
;

// エラーハンドリング省略
PyObject* compiled_code = Py_CompileString(module_code, "hello.py", Py_file_input);
PyObject* module = PyImport_ExecCodeModule("hello", compiled_code);
Py_XDECREF(compiled_code);

// ↓これでは動かない
// PyImport_ImportModule("hello");

const char* main_code =
"import hello\n" // ←これが必要
"h = hello.Hello('world')\n"
"h.say()"
;

PyRun_SimpleString(main_code);

Py_Finalize();

return 0;
}

コメント

非公開コメント

プロフィール

Author:fchiba
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。