我使用Booo::Python做一个混合的C++/Python应用程序:C++应用程序调用一个Python脚本集合,它又使用C++程序的函数、类等,作为Python对象公开。(Python 2.x.)
^ {CD1>}按预期将C++暴露为Python。在
我的初始化代码:
Py_Initialize();
initMyModule(); // import MyModule
namespace bpl = boost::python;
现在,我希望我的C++代码也能获得^ {< CD2>}。在python中,只需编写globals()['MyModule']
。但是这个(和类似的东西)在C++中是不工作的:
这在运行时失败
File "<string>", line 1, in <module>; NameError: name 'globals' is not defined
顺便说一句,我看到很多这样设置__main__
的例子:
bpl::object m = bpl::import("__main__");
bpl::dict g = m.attr("__dict__"); // like locals(), but not globals()
这不会失败,并给出局部变量,但是根据Py_Initialize docs,__main__
已经设置好了。导入的模块在哪里找不到。在
您不需要显式的
bpl::import("__main__");
。在以下是全局数据:
因为一切都是由智能指针管理的,所以直接返回和操作
^{pr2}$bpl::dict
就可以了。在相关问题 更多 >
编程相关推荐