3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Jupyter Notebook/Labでgo言語を使うためのGophernotesでPATHを設定する。

Last updated at Posted at 2019-12-27

Jupyter Notebook/LabでGo言語を利用するためのGophernotesを導入した際に、PATHの設定で手間取ったので解決方法のメモになります。

もしかするともっと良い方法があるかもしれませんが。

事象

Gophernotesを導入し、サンプル程度は動作するようになったのですがサードパーティ製ライブラリをimportしようとするとエラーが発生します。

例えば次のようなimportを行うと

import (
    "bufio"
    "context"
    "fmt"
    "io"

    "cloud.google.com/go/storage"
)

"cloud.google.com/go/storage"の読み込み部分で次のエラーが発生します。
(もちろん、go getは実施済みです)

error loading package "cloud.google.com/go/storage" metadata: 'go list' driver requires 'go', but executable file not found in $PATH

PATH廻りが怪しいと考え、JupyterlabのターミナルからPATHやJUPYTER_PATHを見直したのですが、うまくいきませんでした。

解決策

Gophernotesのカーネル設定ファイルで環境変数としてPATHを上書きして解決しました。

詳しい説明は次を参照してください。
Making kernels for Jupyter

次のようにenvの項目を追加します。

# vi /home/jovyan/.local/share/jupyter/kernels/gophernotes/kernel.json
{
    "argv": [
        "/home/jovyan/go/bin/gophernotes",
        "{connection_file}"
    ],
    "env": {
        "PATH": "/opt/conda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/jovyan/go/bin:/usr/lib/go-1.13/bin"
    },
    "display_name": "Go",
    "language": "go",
    "name": "go"
}

環境によって、元々のPATHに違いがあるかもしれません。
次のようにして確認した方が安全です。

import (
    "fmt"
    "os"
)
fmt.Println(os.Getenv("PATH"))

> "/opt/conda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

これに、/home/jovyan/go/bin(GOPATH/bin)と/usr/lib/go-1.13/bin(GOROOT/bin)を加えています。goのバージョンは適宜変更してください。

上記の設定でインポートエラーが消え、無事に処理が走るようになりました。

3
1
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?