首页 > 编程语言 >Go的Gin框架中使用Cgo调用Python的CApi调用Python代码

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

时间:2024-04-27 16:34:56浏览次数:26  
标签:调用 Cgo cgo Python python 根目录 Gin

在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是否能正常使用。

标签:调用,Cgo,cgo,Python,python,根目录,Gin
From: https://www.cnblogs.com/seal-sill/p/18162194

相关文章

  • Python (GUI编程)模块 使用方法
    GraphicalUserInterface,简称GUI,中文名为图形用户界面,又称图形用户接口,是一种通过图形元素(如按钮、文本框、图像等)来与计算机程序进行交互的方式。与传统的命令行界面相比,GUI更加直观和易于使用,因为用户可以直接通过点击、拖拽等方式来完成任务,而无需记忆和输入复杂的命令。GUI......
  • Python 潮流周刊#48:Python 3.14 的发布计划
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。本期分享了12篇文章,11个开源项目,赠书5本《图解TCP/IP(第6版)》,以下是周刊......
  • [SUCTF 2019]Pythonginx
    [SUCTF2019]Pythonginx打开环境@app.route('/getUrl',methods=['GET','POST'])defgetUrl():url=request.args.get("url")host=parse.urlparse(url).hostname//urlparse对url中的各个组成部分进行分割ifhost=='suctf......
  • go调用langchain
    openai版本设置环境变量OPENAI_API_KEYpackagemainimport("context""fmt""log""github.com/tmc/langchaingo/llms""github.com/tmc/langchaingo/llms/openai")funcmain(){ctx:=context.Backgroun......
  • PageRank算法概述与Python实现
    PageRank算法是一种用于评估网页重要性的算法。它基于网页之间的链接结构来确定网页的权重和重要性。算法的核心思想是通过迭代计算网页之间的链接关系,以确定每个网页的权重。它将互联网视为一个有向图,其中网页是节点,链接是有向边。算法通过以下方式计算网页的PageRank值:每个网页......
  • RPC(远程过程调用)详解
    一、RPC是什么RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。二、RPC需要解决的问题1、CallID映射我们怎么告诉远程机器我们要调用f......
  • 微服务想缓存一些数据,不希望重复调用。java SoftReference软引用存储缓存
    背景:微服务我们要调用字典数据,但是很多都是要重复调用的,没有缓存,我为了设置一个应用的缓存,并且可以定时清理,更新 首先定义两个静态数据,。一个软连接缓存,一个定时清理线程privatestaticSoftReference<Map<String,Map<String,DictionaryVo>>>plmDicMapCache=newSoftR......
  • python简介,第一个Python程序
    Python:可以做日常任务,比如自动备份你的MP3;可以做网站,很多著名的网站包括YouTube就是Python写的;可以做网络游戏的后台,很多在线游戏的后台都是Python开发的。Python当然也有不能干的事情,比如写操作系统,这个只能用C语言写;写手机应用,只能用Swift/Objective-C(针对iPhone)和Java(针对Andr......
  • 华为od python
    importsysrows=4cols=4matrix=[[0,1,1,1],[30,30,-1,40],[0,20,20,40],[10,-1,30,40]]offsets=((-1,0),(1,0),(0,-1),(0,1))classNode:def__init__(self,x,y):self.x=xself.y=yself.initial_energy=0......
  • 利用python将沪深300股票历史数据存储在sqlite3
    一、环境准备1、python3中自带了sqlite3参考https://www.runoob.com/sqlite/sqlite-tutorial.html2、在sqlite中建表CREATETABLE[stock]([id]NVARCHAR(48),[name]NVARCHAR(24), [code]NVARCHAR(24),[date]INTEGERNOTNULL,[open]REAL,[close]......