2011-06-11 116 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