Python C API:如何使用Py_eval_input的PyRun_String导入模块?
PyRun_String("random.randint(1,10)", Py_eval_input, globals, globals);
返回错误,内容是:
Traceback (most recent call last):
File "<string>", line 1, in <module>
NameError: name 'random' is not defined
在代码的前面,我做了:
PyImport_ImportModule("random");
我想这不是让它工作的正确方法。那正确的方法是什么呢?谢谢!
1 个回答
3
PyImport_ImportModule
是一个用来导入模块的函数,它会返回你导入的内容。你需要把这个内容保存在 globals
里,命名为 random
。简单来说就是:
PyMapping_SetItemString(globals, "random", PyImport_ImportModule("random"));
不过别忘了检查导入的结果,以防它出现错误。