为python模块创建golang绑定

问题描述

我想为现有(第三方)Python模块编写golang绑定。 目的是要使用Python模块在Golang中提供的API。

我已经找到用于Python C API的golang绑定(用于py3的go-python3和用于py2的go-python),但是我仍然没有弄清楚如何将相对复杂的Python模块转换为Golang(即如何在go中处理类型安全性以获取不安全的python输入和返回等信息。

什么是好的方法?该空间中是否有任何预先存在的工具?是否有用于Python代码的Golang绑定的良好示例? (我找不到很多)。

任何想法或反馈将不胜感激。非常感谢!

解决方法

我想使用Python模块在Golang中提供的API。

最近Python and Go : Part I - gRPC在“ Miki Tebeka”中详细介绍了从Go调用Python。
您可以在ardanlabs/python-go/grpc

中查看示例

但是,如their next two articles所示,您还可以:

  • 将Go代码编译到共享库中,并从Python交互式shell中使用它。
  • 使用一个Python模块来隐藏使用共享库的底层细节,然后将此代码打包为Python包。

https://www.ardanlabs.com/images/goinggo/124_figure1.png

完整示例:ardanlabs/python-go/pyext

,

这是一个带有实际示例的博客文章。它显示了如何在Golang中为Python模块提供的函数创建包装函数。它使用Python / C API从Golang程序执行Python代码,并在Go和Python之间复制数据。

https://poweruser.blog/embedding-python-in-go-338c0399f3d5

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...