c++调用python 加载python脚本总是返回空值


#include "stdafx.h"
#include <iostream>
#include <python.h>
int _tmain(int argc, _TCHAR* argv[])
{
    Py_SetPythonHome(L"C:\\Users\\Administrator\\anaconda3\\envs\\py38");
    Py_Initialize();
     PyRun_SimpleString("import sys");
    PyRun_SimpleString("sys.path.append('./')");

    PyObject *pName = PyUnicode_FromString("fenleiqi");
    PyObject *pMoudle = PyImport_Import(pName);

    if (pMoudle != NULL)
    {
        printf("加载成功!\n");
//        PyObject *pFun = PyObject_GetAttrString(pMoudle,"ii");

//         PyObject* pArgs = PyTuple_New(2);
// 
//         PyObject *pValue1  = Py_BuildValue("i",5);
//         PyObject *pValue2  = Py_BuildValue("i",3);
//         PyTuple_SetItem(pArgs, 0, pValue1);
//         PyTuple_SetItem(pArgs, 1, pValue2);

    //    PyObject* pReturn = PyObject_CallObject(pFun,pArgs);
        PyObject* pReturn  = PyObject_CallMethod(pMoudle,"select","i",1);

    }
    else
    {
        printf("脚本加载不成功!");
    }
    Py_Finalize();
    return 0;
}

PyImport_Import 总是返回空值


import numpy as np
import xgboost as xgb

def select(classifier):
    from numpy import genfromtxt
    tz_noise = genfromtxt("tz_noisetrain.csv", delimiter=',')
    X=tz_noise[:,:-2]
    y=tz_noise[:,-2]-1
    import pickle
    if classifier==1:
        from xgboost import XGBClassifier
        model = xgb.XGBClassifier(objective='multi:softmax')
        model.fit(X, y)
        pickle.dump(model, open("pima.pickle.dat", "wb"))
    elif classifier==2:
        from sklearn import tree
        model_tree = tree.DecisionTreeClassifier(criterion='entropy') 
        model_tree.fit(X,y)
        pickle.dump(model_tree, open("pima.pickle.dat", "wb"))
    elif classifier==3:
        from sklearn.ensemble import RandomForestClassifier
        model_rf= RandomForestClassifier()
        model_rf.fit(X,y)
        pickle.dump(model_rf, open("pima.pickle.dat", "wb"))
    elif classifier==4:
        from sklearn import ensemble
        model_gbdt=ensemble.GradientBoostingClassifier(random_state=2018)
        model_gbdt.fit(X,y)
        pickle.dump(model_gbdt, open("pima.pickle.dat", "wb"))
    elif classifier==5:
        from sklearn import ensemble
        from sklearn.tree import DecisionTreeClassifier
        model_AdaBoost=ensemble.AdaBoostClassifier(DecisionTreeClassifier(max_depth=5),algorithm="SAMME") 
        model_AdaBoost.fit(X,y)
        pickle.dump(model_AdaBoost, open("pima.pickle.dat", "wb"))
    elif classifier==6:
        from lightgbm.sklearn import LGBMClassifier
        model_lightgbm = LGBMClassifier(objective ='multiclass')
        model_lightgbm.fit(X,y)
        pickle.dump(model_lightgbm, open("pima.pickle.dat", "wb"))
        
#def recog(data):
#    import pickle
#    model = pickle.load(open("pima.pickle.dat", "rb"))
#    ss=np.array(data).reshape(-1, 1).T
#    result=model.predict(ss)
#    return result

select(6)
# data=[1,1,1,1,1,1]
# ff=recog(data)

上述是python代码

c++嵌入python时,python中不能有对系统操作的函数不然就报错。
你可以换一个简单的hello的py脚本试下,如果能调用成功就证明没问题。如 https://blog.csdn.net/wd1603926823/article/details/98086550 的最后所述

fenleiqi.py