LoginSignup
0
0

go言語 外部コマンドの備忘録

Posted at

Go言語の外部コマンドでハマった件の備忘録

やりたかったこと

goの外部コマンドからconda activate 環境名で仮想環境のアクティベートしてpythonファイルを動かしたい

import  (
        "log"
        "os/exec"
        "fmt"
)

func main(){
    out, err := exec.Commond(conda activate 環境名).Output()
    if err = nil{
        log.Fatalln(err)
    }
    fmt.Println(string(out))
}

これでいけるかと思ったがエラー( status exit 1 )しか返ってこない

外部コマンドでconda仮想環境をアクティベートするときは
exec.Command()の引数を("bash", "-c", "source activate 環境名")とするらしい

ということで

import  (
        "log"
        "os/exec"
        "fmt"
)

func main(){
    out, err := exec.Commond("bash", "-c", "source activate 環境名").Output()
    if err = nil{
        log.Fatalln(err)
    }
    fmt.Println(string(out))

ついでに仮想環境をアクティベートしてpythonファイルを動かすのは当たり前だと思うので

import  (
        "log"
        "os/exec"
        "fmt"
)

func main(){
    out, err := exec.Commond("bash", "-c", "source activate 環境名 && python hogehoge.py").Output()
    if err = nil{
        log.Fatalln(err)
    }
    fmt.Println(string(out))

環境名の後に

&& python なんちゃら.py"

をつける

それでもまだエラーが解決しないので

conda init bash

とターミナルで叩いたら解決。理由は不明

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0