问题boost :: python :: numpy:如果“boost :: numpy :: initialize”抛出异常

时间:2017-07-21 16:52:38

标签: python numpy exception boost

如果我想使用boost :: numpy,我需要调用boost :: python :: numpy :: initialize(),但每当我boost :: python时,我都会得到一个boost :: python :: throw_error_already_set异常: :提取boost :: python :: list的一个元素。

我写了一个小例子:

#include <boost/python.hpp>
#include <boost/python/numpy.hpp>
#include <vector>

template <class T>
boost::python::list stdvector2pylist(const std::vector<T> &stdvector) {
    boost::python::list pylist;
    for (auto i_T : stdvector ) {
        pylist.append(i_T);
    }
    return pylist;
}

template< typename T >
std::vector< T > pylist2stdvector( const boost::python::list& pyList) {
    auto stdVector = std::vector<T>(len(pyList));
    for (unsigned i_T = 0; i_T < len(pyList); ++i_T) {
        stdVector[i_T] = boost::python::extract<T>(pyList[i_T]);
    }
    return stdVector;
}

int main(int argc, char **argv) {

    Py_Initialize();
    boost::python::numpy::initialize();

    std::vector<std::string> words{"1", "2", "3"};
    boost::python::list piwords = stdvector2pylist(words);
    std::vector<std::string> reWords = pylist2stdvector<std::string>(piwords);
}

如果我评论boost :: python :: numpy :: initialize();它只是工作正常。 如果列表是从Python脚本发送的,那就可以了。

我正在使用boost 1.65和Python 3.6.1进行链接。

0 个答案:

没有答案