windows配置go调用python的编译环境

go是支持调用python代码的,之前写了几篇linux的部署教程,因为觉得windows的不复杂就没有写,结果今天新部署一个Windows的环境,有些步骤想不起来了,好记性不如烂笔头,还是记录一下吧。

这些是之前写的linux环境的,有兴趣的可以看看:
Ubuntu在线配置:golang调用python环境
Ubuntu离线配置:golang调用python环境
Anolis和CentOS配置:golang调用python环境

想要go调用python,那么安装的python版本必须是3.7的,Windows和linux都一样,高了低了都不行,我一般windows用的3.7.9版本,linux用的3.7.13版本,不知道以后会不会改,但至少目前只能是3.7版本,go的版本好像没什么限制,我的go从1.16到1.21版本都可以。

1.安装gcc,已经安装好的同学跳过此步骤
gcc官网下载
安装步骤很简单,我就懒得记录了,安装到自己想要的路径后,配置环境变量就行
在这里插入图片描述
gcc -v查询版本,有版本就安装成功了
在这里插入图片描述

2.安装python3.7
python官网下载
安装步骤还是省略,这个不难,主要是注意安装路径就行了
安装完成后配置环境变量,路径根据自己实际情况配置
在这里插入图片描述
在这里插入图片描述

在path中添加:
在这里插入图片描述

进入cmd验证:
查询python版本

python --version

查询pip版本

pip --version

在这里插入图片描述

3.安装pkg-config,这一步挺重要的,没有弄好的话,程序不能打包编译
windows可以通过choco去安装,所以就要先安装choco,choco官网安装教程
choco安装好后,打开cmd运行命令安装pkg

choco install pkgconfiglite

然后配置pkg-config环境,自定义一个文件夹pkg_config,我一般是放在d盘的,这个根据自己情况自定义,在文件夹中新建名为"python3.pc"的文件,然后填写以下内容,注意python路径根据自己实际情况填写

PYTHON_HOME=D:/jobs/python/python-3.7.9
lib=${PYTHON_HOME}
include=${PYTHON_HOME}/include
Name: Python
Description: Python library
Requires:
Version: 3.7
Libs: -L${lib} -lpython37 -lpthread -lm
Cflags: -I${include} -DMS_WIN64

配置环境变量
在这里插入图片描述
最后进入cmd,设置环境变量,主要是以下几个,其他的都是默认的,一般不需要改:

set GO111MODULE auto
set GOOS windows
set CGO_ENABLED 1

到这里,go调用python的编译环境就配置完了,有代码的可以试试能不能成功打包编译。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 调用 Go 程序有多种方式,下面是其中两种常见的方式: 1. 使用 subprocess 模块调用 Go 程序 subprocess 模块可以在 Python 脚本中启动一个子进程,并与该子进程进行交互。可以通过 subprocess 模块启动 Go 程序,并通过管道(pipe)实现 Python 和 Go 之间的数据交换。 以下是一个例子: ``` import subprocess # 启动 Go 程序,并通过管道与 Python 进行数据交换 proc = subprocess.Popen(['go', 'run', 'path/to/your/go/program.go'], stdin=subprocess.PIPE, stdout=subprocess.PIPE) # 向 Go 程序发送数据 proc.stdin.write(b'hello from Python\n') proc.stdin.flush() # 读取 Go 程序的输出 output = proc.stdout.readline().decode('utf-8').rstrip() print(output) ``` 2. 使用 cgo 调用 Go 程序 cgo 是 Go 语言提供的一种 C 语言接口,可以让 Go 调用 C 函数或 C 库。因此,可以使用 cgo 编写一个 Go 程序,将其编译成动态链接库(.so 文件),然后在 Python 中使用 ctypes 模块加载该动态链接库,并调用其中的函数。 以下是一个例子: 首先,编写一个简单的 Go 程序,将其编译成动态链接库: ``` package main import "C" import ( "fmt" ) //export Add func Add(a, b int) int { return a + b } func main() { fmt.Println("Go program is running...") } ``` 然后,使用 go build 命令编译该程序成动态链接库: ``` go build -buildmode=c-shared -o libadd.so path/to/your/go/program.go ``` 接下来,在 Python 中使用 ctypes 模块加载该动态链接库,并调用其中的函数: ``` import ctypes # 加载动态链接库 lib = ctypes.cdll.LoadLibrary('./libadd.so') # 调用 Add 函数 result = lib.Add(1, 2) print(result) ``` 以上就是两种常见的 Python 调用 Go 程序的方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值