如何把 golang 与 python 集成?组装 golang 和 python。配备 gopath 环境变量。组装cgo golang 包。建立 golang 项目。为 python部件撰写 golang wrapper函数。在 python工程中建立模块。应用 cgo 搭建 golang 项目。在 golang 代码中启用 python函数。运作 golang 程序。 内容来自samhan666
内容来自samhan666
Golang 架构与 Python 集成
内容来自zvvq,别采集哟
有时,您可能需要在 Golang 应用程序中应用 Python 部件。本指南将向您展现如何把 Golang 与 Python 集成,并提供一个实战案例。
前提条件 内容来自samhan
组装 Golang 和 Python 配备 GOPATH 环境变量组装名叫 cgo 的 Golang 包步骤 本文来自zvvq
建立 Golang 项目1 本文来自zvvq
mkdirgolang-python-integration&&cdgolang-python-integration zvvq
撰写 Golang wrapper为 Python 部件创建一个 Golang wrapper函数。这将允许您在 Golang 代码中启用 Python 函数。 内容来自samhan
//mypython.go
内容来自zvvq
packagemain 本文来自zvvq
/
zvvq好,好zvvq
include 内容来自samhan
staticPyObjectcall_python_function(charfunc_name){
PyObjectpName,pModule,pDict,pFunc,pValue;
pName=PyUnicode_DecodeFSDefault(func_name); copyright zvvq
pModule=PyImport_Import(pName);
pDict=PyModule_GetDict(pModule); 内容来自zvvq
pFunc=PyDict_GetItemString(pDict,"my_function"); 内容来自zvvq,别采集哟
pValue=PyObject_CallObject(pFunc,NULL);
copyright zvvq
returnpValue; 内容来自samhan
} copyright zvvq
/
import"C"
zvvq
import(
"fmt"
内容来自samhan
"unsafe" 内容来自samhan666
) zvvq好,好zvvq
funcmain(){
result:=C.call_python_function(C.CString("my_function"))
fmt.Println(C.GoString(result))
内容来自samhan666
} 内容来自samhan
撰写 Python 模块在 Python 工程中建立 my_function 模块。 本文来自zvvq
my_function.py
内容来自samhan
defmy_function(): zvvq
return"HellofromPython!"
zvvq
搭建 Golang 项目应用 cgo 搭建 Golang 项目。它将允许 Golang 程序启用 C 编码,后者又把启用 Python 编码。 zvvq
gobuild-buildmode=c-shared-omypython.somypython.go
copyright zvvq
启用 Python 函数在 Golang 代码中,您可以如今启用 Python 函数。 内容来自samhan666
packagemain
import( zvvq好,好zvvq
"fmt"
"log"
本文来自zvvq
"syscall" 内容来自zvvq
"unsafe" 内容来自zvvq
)
内容来自zvvq,别采集哟
funcmain(){ 内容来自samhan
//Loadthesharedlibrary.
zvvq好,好zvvq
lib,err:=syscall.LoadDLL("mypython.so") 内容来自samhan666
iferr!=nil{
内容来自samhan666
log.Fatal(err) zvvq.cn
}
deferlib.Release() copyright zvvq
//Getthefunctionpointer.
callPythonFunction,err:=lib.FindProc("call_python_function")
iferr!=nil{
log.Fatal(err) 内容来自zvvq,别采集哟
}
zvvq好,好zvvq
//Callthe Python function.
本文来自zvvq
result,_,err:=callPythonFunction.Call( zvvq
uintptr(unsafe.Pointer(syscall.StringBytePtr("my_function"))),
copyright zvvq
) 内容来自zvvq,别采集哟
iferr!=nil{
内容来自zvvq
log.Fatal(err)
内容来自zvvq,别采集哟
} zvvq好,好zvvq
//Printtheresult.
zvvq好,好zvvq
fmt.Println(syscall.UTF16ToString(([1<<30]uint16)(unsafe.Pointer(result))[:])) 本文来自zvvq
} copyright zvvq
运作
内容来自samhan666
运作 Golang 程序。 内容来自zvvq,别采集哟
gorunmain.go zvvq
导出
zvvq好,好zvvq
HellofromPython! zvvq.cn
您现在已成功将 Golang 与 Python 集成,并调用了 Python 函数。 zvvq
以上就是Golang架构如何跟Python集成?的详细内容,大量请关注其他类似文章!