kakakakakku blog

Weekly Tech Blog: Keep on Learning!

Jupyter Notebook に環境変数を設定する

最近 Jupyter Notebook を使って Python コードを実装しているときに,設定値を直接コードに書くのではなく,環境変数から取得する必要があった.小ネタとして「Jupyter Notebook に環境変数を設定する方法」をまとめておく.結論として,今回は direnv を使うことにした.

jupyter.org

Shell 変数を設定する

サンプルとして,環境変数 BLOG_URL を設定することにする.1番お手軽に実現する場合は,Shell 変数を設定して Jupyter Notebook を起動する.設定する環境変数が少なければ,Shell 変数でも良さそう.

$ BLOG_URL='https://kakakakakku.hatenablog.com' jupyter notebook

export で環境変数を設定する

設定する環境変数が多くなる場合は,事前に export してから Jupyter Notebook を起動する.

$ export BLOG_URL='https://kakakakakku.hatenablog.com'
$ jupyter notebook

direnv を使う

繰り返し実行する場合は,自動的に export したくなる.今までもよく使っていたけど,direnv を使うと環境変数の管理が楽になる.もし direnv を使ったことがない場合は,brew から簡単にインストールできる.

$ brew install direnv
$ direnv --version
2.19.2

github.com

今回は .envrc に環境変数を設定した.なお .envrc には認証情報などを設定する場合が多く,誤って GitHub などに push しないように .gitignore に追加しておくこと.他にも awslabs/git-secrets を使うなど,防御策もある.

$ cat .envrc
export BLOG_URL='https://kakakakakku.hatenablog.com'

direnv を使う場合は,そのまま Jupyter Notebook を起動する.

direnv: loading .envrc
$ jupyter notebook

Jupyter Notebook Config に設定する

以下のコマンドを実行すると ~/.jupyter/jupyter_notebook_config.py に Jupyter Notebook 自体の設定ファイルが自動生成される.デフォルトでは全てコメントになっている.

$ jupyter notebook --generate-config

jupyter-notebook.readthedocs.io

Jupyter Notebook の起動時に実行されるため,例えば以下のように書いておくと,環境変数を設定できる.jupyter_notebook_config.py はデフォルトだとホームディレクトリに自動生成されるけど,Jupyter Notebook を起動するディレクトリに置くと優先される.ただし,あくまで Jupyter Notebook 自体の設定ファイルなので,コードのための環境変数を設定する用途は適切ではないと思う.

import os
os.environ['BLOG_URL'] = 'https://kakakakakku.hatenablog.com'

まとめ

今回は「Jupyter Notebook に環境変数を設定する方法」をまとめた.direnv を使うことにしたけど,要件によっては Shell 変数で十分な場合もあると思う.よって,以下のように Python コードで環境変数から設定値を取得できるようになった.

import os
os.environ['BLOG_URL']

せっかくサンプルとして BLOG_URL を取得できるようになったので,Selenium を使って「kakakakakku blog」のトップページをキャプチャして,Jupyter Notebook に表示できるようにして遊んだ.Jupyter Notebook 本当に便利!

f:id:kakku22:20190228185915p:plain