我正在尝试创建结合了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 ++动态库分离到它自己的文件中,它们都可以工作,但我真的需要我的扩展模块只是出于其他技术原因的一个文件)
答案 0 :(得分:1)
boost::python::scope().attr("aaa")="ABC";