如何使用CGO在Golang中导入cython生成的文件

时间:2018-08-30 10:15:53

标签: python go cython cgo

我将python文件cythonized到example.c和example.so 我可以将这些文件导出为python模块,并以python的身份访问该函数 testing.py:

import example
example.test()

通过这种方式,我可以轻松地将cythonized python文件导入python。 如何使用cgo同样地将这些文件导入golang?

1 个答案:

答案 0 :(得分:1)

Cython代码包含大量包装代码,以创建python模块并与Python对象和C类型进行相互转换。

您可能不需要任何这些。例如,在cgo中一个非常简单的hello世界可能就是:

/* hello.c */
#include <stdio.h>

static void hello(void) {
    printf("hello world!\n");
}

您可以使用特殊的导入以及一些包含指令注释的C代码从GO中调用它:

package main

// #include <hello.c>
import "C"

func main() {
    C.hello()
}

您当然可以尝试仅包含上面的“ cythonized” C文件,但是您还需要包含适当的链接器指令,以便Go可以将所有Python运行时内容编译到Go二进制文件中。

一般来说,这可能不是您要执行的操作...

如果您真的想从Go中调用Python,则可能要看一下http://grump.io/之类的东西。