正在从Go调用CPython扩展

2024-06-16 11:20:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前有一个源文件,用C++编写,并被封装到Python模块中(使用Boost和PalSeSLIBS)。p>

我将C++文件夹移植到Go/Src和.so文件中,MIN .GO

课程结构

src
   /main
      main.go
      network.so
   /network
       file1.cpp (this has a function **object DBdata::getTable())
       file1.hpp (#define FILE1_H_)
   

main.go

package main

// #cgo pkg-config: python3
// #cgo CFLAGS : -I./ -I/usr/include/python3.6
// #cgo LDFLAGS: -L/usr/lib/python3.6/config-3.6m-x86_64-linux-gnu -L/usr/lib -lpython3.6 -lpthread -ldl  -lutil -lm
// #include <Python.h>
import "C"

import "fmt"

func main() {

  cmd := exec.Command("python", "-c", "import network; network.getTable()")
  cmd.Dir = "/home/username/go/src/network"    //directory where is my python code
  out,err := cmd.CombinedOutput()
} 

在构建这个main.go之后,我得到的错误是

/usr/include/boost/config/no_tr1/memory.hpp: fatal error: memory: No such file or directory 
>  #  include 
>             ^~~~~~~~
> compilation terminated.

如何导入.so作为Go中的Python模块? 这个地方能用Swig吗

公开Python模块的更好方法是什么


Tags: 模块importsrccmdconfiggosoinclude