1. 程式人生 > >在VS中匯出python第三方包

在VS中匯出python第三方包

網上很多用VS呼叫python指令碼函式的方法,但是經過多方實驗,很少成功的,記錄成功的方法。

假如匯入的包是numpy

需要包含numpy的include和lib在環境路徑中,再包含需要的標頭檔案,假如用到array就需要包含"arrayobject.h"

然後再自己定義一個初始化的函式,如下:

int init_numpy() 
{//初始化 numpy 執行環境,主要是匯入包,python2.7用void返回型別,python3.0以上用int返回型別


import_array();
}

後面再main函式中,先初始化python,再初始化需要的第三方包:

        Py_Initialize();
init_numpy();

然後就可以用第三包裡的函數了,比如我需要傳陣列給我的python函式:我就用到這個函式:PyArray_SimpleNewFromData

具體為:

PyObject *pValue = NULL;

float CArrays[9] = { 1, 2, 5, 4, 7, 8, 5, 0, 0};//python中的資料型別多為float型的,所以定義為了float型。

pValue = PyArray_SimpleNewFromData(nd, Dims, NPY_FLOAT, CArrays);

這樣pvalue就是python需要的型別了,也就是array型別,可以直接傳進我的函式中

PyInit_mytest();

pyList=mytest(pValue);

本部分只是介紹實驗成功的利用第三方包來傳入陣列的方法,具體呼叫方法可以參見C++與python通訊,採用cython實現。