首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyImport_Import与import

PyImport_Import与import
EN

Stack Overflow用户
提问于 2009-05-18 15:56:28
回答 1查看 2.5K关注 0票数 2

我试着替换掉

代码语言:javascript
复制
PyRun_SimpleString("import Pootle");

使用

代码语言:javascript
复制
PyObject *obj = PyString_FromString("Pootle");
PyImport_Import(obj);
Py_DECREF(obj);

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

有人能给我解释一下其中的区别吗?有没有一种方法可以像第一个方法一样处理C API调用?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-05-18 17:11:32

PyImport_Import调用所做的只是返回对模块的引用--它不会使这样的引用对程序的其他部分可用。因此,如果您希望PyRun_SimpleString看到新导入的模块,则需要手动添加它。

PyRun_SimpleString__main__模块命名空间中自动工作。在不太注意错误检查的情况下(注意NULL返回!),这是一个大致的概述:

代码语言:javascript
复制
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);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/878439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档