方法一:使用 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
。