本文章目的是脫離安裝python環境的前提下,由c++程式呼叫python程式及python相關三方庫
紅色部分是生成路徑下直譯器執行時依賴
將紅色部分拷貝到c++編譯主exe路徑下即可,並把需要允許的py檔案頁考過去(也就是.py檔案需和編譯生成的.exe檔案放在一起)
藍色部分是vs配置編譯時依賴,需要新增到vs工程的環境中
除此之外,也可以指定環境:
讀取python檔案位置
程式最終發布的時候,不需要在客戶端機上安裝python,只需要拷貝python檔案的libs,lib庫,include資料夾,dll資料夾等到安裝目錄下,並使用
py_setpythonhome((char*)strpythonlibpath.c_str());指定查詢路徑
在vs
python程式
def testreturn1(s1, s2):
s = s1+s2
return s
def testreturn2(s1):
return s1
c++程式
//***python呼叫***//
//初始化python模組
py_initialize();
// 檢查初始化是否成功
if (!py_isinitialized())
pyobject *pmodule= pyimport_importmodule("helloworld");//python檔名
if (!pmodule)
else
pyobject *pyparams1 = pytuple_new(2);
pytuple_setitem(pyparams1, 0, py_buildvalue("s", "hello "));
pytuple_setitem(pyparams1, 1, py_buildvalue("s", "python"));
char * result1;
pyobject*parg = pyeval_callobject(pfunc, pyparams1);//呼叫函式
pyarg_parse(parg, "s", &result1);
cout << result1 << endl;
pfunc = pyobject_getattrstring(pmodule, "testreturn2");//python檔案中的函式名
if (!pfunc)
pyobject* pyparams3 = py_buildvalue("(i)", 123);
int result2;
parg = pyeval_callobject(pfunc, pyparams3);//呼叫函式
pyarg_parse(parg, "i", &result2);
cout << result2 << endl;
}
結果 redis安裝及python呼叫
1 ubuntu安裝redis sudo apt install redis y2 設定密碼 編輯配置檔案,找到requrepass這行去掉注釋 sudo vim etc redis redis.conf requirepass 123456 去掉注釋,後面的密碼就是redis的密碼 找到bind ...
C 呼叫Python語言
是一種在 net和 mono 上實現的 python 語言 2.開啟vs,新增兩個引用,在ironpython的安裝根目錄下面選擇ironpython.dll和microsoft.scripting.dll using microsoft.scripting.hosting using ironpy...
C 呼叫Python方法
2.3.通過c 呼叫python指令碼,主要利用python提供的api,實際上,c 主要呼叫的是python的直譯器,而python的直譯器本質就是實現在動態鏈結庫裡的,因此在呼叫前後要進行一些初始化和資源釋放的工作,另外,要呼叫python指令碼裡的函式等等,需要使用python提供的一些特殊的...