问题描述
我想为现有(第三方)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包。
完整示例:ardanlabs/python-go/pyext
。
这是一个带有实际示例的博客文章。它显示了如何在Golang中为Python模块提供的函数创建包装函数。它使用Python / C API从Golang程序执行Python代码,并在Go和Python之间复制数据。