c++載入python模組,但是PyImport_ImportModule老返回NULL
阿新 • • 發佈:2019-01-06
問題描述:
呼叫 PyImport_ImportModule載入python老是返回NULL,如下所示:“沒有找到符號”
解決辦法:
import某塊返回值為0的是因為:VC工程的當前工作目錄和.py檔案所在目錄不一致導致的。
當.py檔案和工程不在統一目錄時,若要import .py檔案,只需要在import之前增加python的搜尋目錄就可以了:
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('py所在目錄')");
#include "stdafx.h" #include <Python.h> #include <stdio.h> #include <iostream> using namespace std; //匯入std名字空間 int _tmain(int argc, _TCHAR* argv[]) { cout << "Starting Test..." << endl; Py_Initialize();//使用python之前,要呼叫Py_Initialize();這個函式進行初始化 PyObject * pModule = NULL;//宣告變數 PyObject * pFunc = NULL;//宣告變數 PyRun_SimpleString("import sys"); PyRun_SimpleString("sys.path.append('D:/2018program/VCPythonFile/VCPythonFile/')"); cout << "------------"<<endl; pModule = PyImport_ImportModule("helloworld");//這裡是要呼叫的Python檔名 cout << pModule << endl; pFunc = PyObject_GetAttrString(pModule, "printHello"); //這裡是要呼叫的函式名 PyEval_CallObject(pFunc, NULL); //呼叫函式,NULL表示引數為空 Py_Finalize();//呼叫Py_Finalize,這個和Py_Initialize相對應的. return 1; }
helloworld.py 內容如下: