組み込み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;
}