Go的Gin框架中使用Cgo调用Python的CApi调用Python代码

在Gin项目中定义Services用以唤起Python,值得注意的是需要在引入Python.h前使用#cgo声明依赖库

package cpython

// #cgo CFLAGS: -I"Q:/Sill-/anaconda/envs/poetry/include"
// #cgo LDFLAGS: -L"Q:/Sill-/anaconda/envs/poetry/libs" -lpython311
// #include <Python.h>
import "C"

type Cpython struct{}

func (cp *Cpython) Torch() {
	C.Py_Initialize()

	code := "print('hello world')"
	C.PyRun_SimpleString(C.CString(code))

	C.Py_Finalize()
}

将该Service绑定路由后,执行项目。本地如果使用conda注意切换激活python版本。
注意设置本地CPATH环境变量,值为python对应版本根目录下includes/路径。

如果无法正常运行,可尝试:

  1. 设置或修改环境变量PYTHONHOMEPYTHONPATH为python对应版本根目录下includes/路径。
  2. 检查本地gcc是否能正常使用。
posted @ 2024-04-27 16:21  SealSill  阅读(120)  评论(0)    收藏  举报