Golang在Go语言中嵌入Python

2izufjch  于 2023-02-27  发布在  Go
关注(0)|答案(1)|浏览(145)

我一直在阅读文章embedding-python-in-go和原始文章packaging-python-code,但是我还没有成功地通过cgo运行Python. h。
这可以在m1 mac上完成吗?如果不行,我应该把所有东西都移植到Linux docker容器中吗?
在建立这种类型的项目时,我错过了什么。
下面是文章1中的一个简单示例。这会导致错误
./main.go:22:4: could not determine kind of name for C.PyRun_SimpleString
删除第20-23行返回错误

# command-line-arguments
Undefined symbols for architecture arm64:
  "_Py_Finalize", referenced from:
      __cgo_672c0788d500_Cfunc_Py_Finalize in _x002.o
     (maybe you meant: __cgo_672c0788d500_Cfunc_Py_Finalize)
  "_Py_Initialize", referenced from:
      __cgo_672c0788d500_Cfunc_Py_Initialize in _x002.o
     (maybe you meant: __cgo_672c0788d500_Cfunc_Py_Initialize)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [run] Error 2

有点迷失在架构错误上;m1问题?
在Mac上导入python. h是#include〈Python/Python.h〉而不是#include<Python.h>importing Python.h on mac
软件规格
Python 3.9.10语言描述工具
$ go版本go版本go1.17.8达尔文/arm 64
macOS版本11.4,M1 2020.
Python. h位于/库/开发人员/命令行工具/库/框架/Python 3.framework/版本/3.8/标题/Python. h下
引用git存储库ardanlabs/python-gogo-python3christian-korneck/python-go

1l5u6lss

1l5u6lss1#

Go语言的CGO实现及其错误信息在你第一次使用时是一个挑战。
CGO和C/C++ include的规则是你必须在include后面加上import“C”,否则你就不会知道你做错了什么。

// #include <Python.h>
import "C"

相关问题