gpt4 book ai didi

python - PyImport_Import 与导入

转载 作者:太空宇宙 更新时间:2023-11-04 02:20:20 47 4
gpt4 key购买 nike

我试过替换

PyRun_SimpleString("import Pootle");

PyObject *obj = PyString_FromString("Pootle");
PyImport_Import(obj);
Py_DECREF(obj);

在一些 C 代码中初始化模块 Pootle 之后。第一个似乎使名称 Pootle 可用于后续的 PyRun_SimpleString 调用,但第二个没有。

有人可以向我解释一下区别吗?有没有一种方法可以完成第一个对 C API 调用所做的事情?

谢谢

最佳答案

PyImport_Import 调用所做的只是返回对模块的引用——它不会使程序的其他部分可以使用这样的引用。所以,如果你想让 PyRun_SimpleString 看到你新导入的模块,你需要手动添加它。

PyRun_SimpleString__main__ 模块命名空间中自动运行。无需过多注意错误检查(警惕 NULL 返回!),这是一个大纲:

PyObject *main = PyImport_AddModule("__main__");  
PyObject *obj = PyString_FromString("Pootle");
PyObject *pootle = PyImport_Import(obj);
PyObject_SetAttrString(main, "Pootle", pootle);

Py_DECREF(obj);
Py_XDECREF(pootle);

关于python - PyImport_Import 与导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/878439/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com