Python C API : How to get PyRun_String with Py_eval_input to use imported modules?

标签 python python-c-api

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");

我想这不是让它工作的方法。什么是正确的方法? 谢谢!

最佳答案

PyImport_ImportModule 返回导入的值。您需要将其保存在 globals 中,名称为 random。总结:

PyMapping_SetItemString(globals, "random", PyImport_ImportModule("random"));

但不要忘记检查导入的结果以防它抛出异常。

关于Python C API : How to get PyRun_String with Py_eval_input to use imported modules?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6150835/

相关文章:

python - 以列表形式阅读列

python - 获取 DataFrame 中按组的日期计数

python - 用于检测空序列的更好的 for 循环语法?

Python range( ) 没有给我一个列表

python - 将 C 结构传递给 Python 函数

python - 按属性对对象列表进行排序的最有效方法?

python - Python 3 中的 PyClass_New 等价物是什么?

python - 如何正确使用 Python 的 C API 和异常?

python - PyAPI_DATA() 宏的解释?

Python C API : Call a Python function with argument(s) passed by reference