如何从 Python 调用 Go 函数
How to call Go function from Python
我正在尝试从 python 调用 go lang 函数
当我调用我的 python 程序时,我看到以下错误。
我指的是Go to pythnlink。
Python 计划
from ctypes import *
def call_go_function():
lib = cdll.LoadLibrary("./awesome.so")
lib.Add.argtypes = [c_longlong, c_longlong]
print( lib.Add(12,99))
call_go_function()
去编程
package main
import "C"
import (
"sync"
)
var count int
var mtx sync.Mutex
//export Add
func Add(a, b int) int { return a + b }
func main() {}
从 Python 路径看来这是一个 32 位 Python 版本。您不能混合使用 32 位和 64 位 user-space 代码。
所以我猜你需要:
- 将您的 Go 代码重建为 32 位 DLL(参见 GOARCH=386)或
- 安装并 运行 64 位 Python 版本。
也许是环境吧。尝试 运行 一个简单的程序。
from ctypes import *
lib = cdll.LoadLibrary("./func.so")
r=lib.fun(10,20)
print(r)
package main
import "C"
//export fun
func fun(x int,y int) int{
return x+y
}
func main(){}
>go build -o func.so -buildmode=c-shared func.go
>python test.py
30
我正在尝试从 python 调用 go lang 函数 当我调用我的 python 程序时,我看到以下错误。 我指的是Go to pythnlink。
Python 计划
from ctypes import *
def call_go_function():
lib = cdll.LoadLibrary("./awesome.so")
lib.Add.argtypes = [c_longlong, c_longlong]
print( lib.Add(12,99))
call_go_function()
去编程
package main
import "C"
import (
"sync"
)
var count int
var mtx sync.Mutex
//export Add
func Add(a, b int) int { return a + b }
func main() {}
从 Python 路径看来这是一个 32 位 Python 版本。您不能混合使用 32 位和 64 位 user-space 代码。
所以我猜你需要:
- 将您的 Go 代码重建为 32 位 DLL(参见 GOARCH=386)或
- 安装并 运行 64 位 Python 版本。
也许是环境吧。尝试 运行 一个简单的程序。
from ctypes import *
lib = cdll.LoadLibrary("./func.so")
r=lib.fun(10,20)
print(r)
package main
import "C"
//export fun
func fun(x int,y int) int{
return x+y
}
func main(){}
>go build -o func.so -buildmode=c-shared func.go
>python test.py
30