如何在用Go和Python编写的程序之间共享数据?

2024-06-16 09:44:50 发布

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

从main.go,我必须调用一个依赖于Python运行时的CPython文件夹(mycprog)。文件夹“MycPROG”是用C++编写的,但被封装到Python模块中,这就通过Python解释器。p>

课程结构

/src
/main
      main.go 
/mycprog
    a1.cpp (this has a function **object EEEdept::getStaffID()**`)  
    a1.hpp 
    a2.cpp

main.go

package main
    
    // #cgo pkg-config: python3
    
    // #cgo CFLAGS : -I./ -I/usr/include/python3.6m
    
    // #cgo LDFLAGS: -L/usr/lib/python3.6/config-3.6m-x86_64-linux-gnu -L/usr/lib -lpython3.6m -lpthread -ldl -lutil -lm
    
            
    import "C"
    
    import (
    
    "fmt"
    
    "os/exec"
    )
    
    func main() {
    
    cmd := exec.Command("python", "-c", "import mycprog; mycprog.getStaffID()")
       
    out,err := cmd.CombinedOutput()    
    if err != nil {
   
        fmt.Println(err);
    
   }
    
    fmt.Println(string(out))
    }

当我构建main.go时,我得到了这个错误

exit status 1

Traceback (most recent call last):

File "<string>", line 1, in <module>

ModuleNotFoundError: No module named 'mycprog'

从我的角度来看,exec.Command语法是错误的,我遵循了参考中的示例

参考资料:

https://lmjw.github.io/2017/11/26/blog-docker-python-golang.html

如果在导入“C”之后添加了导入“mycprog”,则得到

#包括<;补丁级别.h>;编译终止

我需要修复exec.Command中的哪个部分


Tags: import文件夹configgomainusra1cpp
1条回答
网友
1楼 · 发布于 2024-06-16 09:44:50

您可以在定义命令后尝试更改工作目录:

cmd := exec.Command("python", "-c", "import mycprog; mycprog.getStaffID()")
cmd.Dir = "your/working/directory"    //directory where is your python code
out,err := cmd.CombinedOutput()  

相关问题 更多 >