方法一:使用 os/exec

你可以使用 Go 的 os/exec 包来执行 Python 脚本。首先,确保你的 Python 虚拟环境已经激活,并且你知道 Python 解释器的路径。

以下是一个简单的示例:

package main

import (
    "fmt"
    "os/exec"
)

func main() {
    // 指定虚拟环境中的 Python 解释器路径
    pythonPath := "/path/to/your/venv/bin/python"
    scriptPath := "/path/to/your/script.py"

    // 创建命令
    cmd := exec.Command(pythonPath, scriptPath)

    // 运行命令并获取输出
    output, err := cmd.CombinedOutput()
    if err != nil {
        fmt.Printf("Error: %s\n", err)
    }

    // 打印输出
    fmt.Printf("Output: %s\n", output)
}

方法二:使用 cgo 调用 Python

如果你需要更复杂的交互,可以考虑使用 cgo 来调用 Python 的 C API。这种方法相对复杂,通常不推荐用于简单的脚本调用。

方法三:使用 RPC 或 HTTP 接口

如果你的 Python 程序可以作为一个服务运行(例如 Flask 或 FastAPI),你可以通过 HTTP 请求从 Go 中调用它。这种方法适合需要频繁交互的场景。

以下是一个简单的 HTTP 请求示例:

package main

import (
    "bytes"
    "fmt"
    "net/http"
)

func main() {
    url := "http://localhost:5000/your-endpoint"
    jsonData := []byte(`{"key": "value"}`)

    resp, err := http.Post(url, "application/json", bytes.NewBuffer(jsonData))
    if err != nil {
        fmt.Printf("Error: %s\n", err)
        return
    }
    defer resp.Body.Close()

    // 处理响应
    // ...
}

总结

选择哪种方法取决于你的具体需求。如果只是简单地运行一个脚本,使用 os/exec 是最简单的方式。如果需要更复杂的交互,考虑使用 HTTP 接口或 cgo