C 呼叫python3 7指令碼

2021-10-10 05:50:52 字數 2012 閱讀 2876

3. 報錯

總結c++調python環境配置

python/c api參考文件

// 新增當前路徑

pyrun_******string("import sys");

pyrun_******string("print ('---import sys---')");

pyobject *pname, *pmodule, *pfunc, *pargs;

// 載入名為pytest的指令碼

pname = pyunicode_fromstring("cp1");

pmodule = pyimport_import(pname);

if (!pmodule)

// 找出函式名為add的函式

printf("----------------------\n");

pfunc = pyobject_getattrstring(pmodule, "sum");

//找不到add函式的原因:py檔案和cpp檔案不能以test為名

if (!pfunc || !pycallable_check(pfunc))

// 引數進棧

*pargs;

pargs = pytuple_new(2);

pytuple_setitem(pargs, 0, py_buildvalue("l", 3));

pytuple_setitem(pargs, 1, py_buildvalue("l", 4));

// 呼叫python函式

pyobject_callobject(pfunc, pargs);

//下面這段是查詢函式foo 並執行foo

printf("----------------------\n");

pfunc = pyobject_getattrstring(pmodule, "foo");

if (!pfunc || !pycallable_check(pfunc))

pargs = pytuple_new(1);

pytuple_setitem(pargs, 0, py_buildvalue("l", 2));

pyobject_callobject(pfunc, pargs);

py_decref(pname);

py_decref(pargs);

py_decref(pmodule);

// 關閉python

py_finalize();

return 0;

}

import cp2

def sum(a,b):

cp2.add1(a,b);

return

def foo(a):

print ("in python function foo" )

print ("a = " + str(a) )

print ("ret = " + str(a * a) )

return

def add1(a,b):  

print ("in python function add")

print ("a = " + str(a) )

print ("b = " + str(b))

print ("ret = " + str(a+b))

return

問題:使用簡體中文編碼與utf-8不匹配

解決:使用notepad++開啟cpp和py檔案,選擇utf-8編碼,儲存。

問題:can』t find function sum

解決:py檔案和cpp檔案不能以test為名

有點意思!

c 呼叫複雜的python3指令碼

平台 vs2017 python3.7.6 配置 python3.7.0配置 部分 標頭檔案 include main py initialize 創造python虛擬環境初始化if py isinitialized pyrun string import sys 必要步驟 pyrun string...

linux shell 程式設計 10 指令碼中呼叫指令碼

在shell指令碼中呼叫另乙個指令碼的三種不同方法 fork,exec,source 1 fork 呼叫指令碼 fork directory script.sh fork是最普通的,就是直接在指令碼裡面用 directory script.sh來呼叫script.sh這個指令碼.執行的時候開乙個su...

python3 7版本安裝pygame1 9 4

所以如果是python2.7以下版本的需要重新安裝pip 這個 就可以 所以既然pip版本不夠就執行更新命令python m pip install u pip 這樣會把pip的版本自動更新到18.1,就可以安裝3.7版本所有的python外掛程式 接下來去安裝pygame,pygame是以whl檔...