2011-06-11 102 views
1

我是否导入这样的:与升压蟒蛇导入

numpy_module = bp::import("numpy"); 

或像这样:

numpy_module = bp::scope().attr("numpy"); 

我得到

terminate called after throwing an instance of 'boost::python::error_already_set' 

我没有与Python 2.7的一个问题,但是在升级到Python 3.1之后,这个奇怪的异常就出现了。

回答

1

明白了:我需要为Python31编译Boost。

+1

然后你应该接受你自己的答案。但下一句话:当你捕捉到'error_already_set'时,你应该调用'PyErr_Print()',它会向你显示来自Python的真正的错误信息。 – 2011-06-11 23:58:26

+1

很酷。如果你想以std :: exception的形式传播异常,你可以通过使用PyErr_Fetch()来获取异常的值(字符串),然后在C++中重新将它抛出为std :: exception。为什么提升Python似乎没有提供帮助来做到这一点我不知道。 – 2011-06-12 00:23:11