• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

go gin框架调用cmd运行python脚本问题

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

报错1:exec: "python3 test.py": executable file not found in $PATH

在单个go程序中直接执行以下脚本没有问题

func TestCmdPython(t *testing.T) {
    //test.txt的内容为图片的base64字符串
    //filePath := "test.txt"
    //newFileName := "test.jpg"
    //CmdPythonSaveImageDpi(filePath,newFileName)
    cmd := exec.Command("python3 test.py")
    //cmd.Dir, _ = os.Getwd()
    fmt.Println("cmd.Path:",cmd.Path)
    fmt.Println("cmd.Dir:",cmd.Dir)
    //out,err := cmd.Output()
}

但是在gin中开启子线程去执行脚本,就会有报错1的出现

go diffPython()

func diffPython(result1, result2 string,scope string) bool { //args := []string{} fmt.Println(os.Getwd()) cmd := exec.Command("python3 ./script/test.py") fmt.Println("cmd.Path:",cmd.Path) fmt.Println("cmd.Dir:",cmd.Dir) out,err := cmd.Output() if err != nil { fmt.Println("diffPython:",err) } result := string(out) fmt.Println(result) //if strings.Index(result, "success") != 0 { // err = errors.New(fmt.Sprintf("main.py error:%s", result)) //} res, _ := strconv.ParseBool(result) return res }

1.gin运行后当前目录为项目的目录,而不是go文件所在的目录

2.gin中的exec.Commond会将python3 test.py识别为一整个命令,而不是python3 +参数

 

解决方案,将python和运行文件分开

//执行python脚本
func diffPython(result1, result2 string,scope string) bool {
    //args := []string{}
    fmt.Println(os.Getwd())
    cmd := exec.Command("python3","./script/test.py")
    fmt.Println("cmd.Path:",cmd.Path)
    fmt.Println("cmd.Dir:",cmd.Dir)
    out,err := cmd.Output()
    if err != nil {
        fmt.Println("diffPython:",err)
    }
    result := string(out)
    fmt.Println(result)
    //if strings.Index(result, "success") != 0 {
    //    err = errors.New(fmt.Sprintf("main.py error:%s", result))
    //}
    res, _ := strconv.ParseBool(result)
    return res
}

其中还会有一个报错  exit status 1,是因为我的脚本为python3的不能用python -dir执行


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go语言系列之标准库path/filepath发布时间:2022-07-10
下一篇:
Go语言中用os/exec执行命令的五种姿势发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap