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