如何在boost :: python扩展模块中正确组合C ++和Python代码?

时间:2014-05-09 00:21:42

标签: python c++ boost boost-python

我正在尝试创建结合了C ++和Python代码的Python扩展模块。到目前为止,我能够正常运行Python代码,但我无法找到一种方法让我的Python对象作为模块导入的一部分出现。我究竟做错了什么?

这里是我的C ++模块的示例代码(为了清楚起见,我省略了绑定C ++函数和类的C ++ / boost :: python代码):

#include <boost/python.hpp>
BOOST_PYTHON_MODULE( my_module ) { 
  <... some boost::python code to bind C++ classes/functions ...>
  boost::python::object main_module = boost::python::import("__main__");
  boost::python::object main_namespace = main_module.attr("__dict__”);
  boost::python::exec("aaa = 'ABC’\n”, main_namespace, main_namespace);
}

后来在Python中尝试:

import my_module
print my_module.aaa  <— error!

(我知道我可以将python文件和C ++动态库分离到它自己的文件中,它们都可以工作,但我真的需要我的扩展模块只是出于其他技术原因的一个文件)

1 个答案:

答案 0 :(得分:1)

boost::python::scope().attr("aaa")="ABC";