JupyterLabのディレクトを簡単に切り替えたい!
JupyterLabを複数のディレクトリで使う場合、そのディレクトリを切り替えるのが非常に面倒だったりします。
そこで簡単にディレクトリを変更する方法が無いか調べましたが、調べた限り唯一の方法はJupyterLabの設定ファイル jupyter_notebook/lab_config.py を使うというものでした。
対処方法
1. jupyter_[notebook/lab]_config.pyの作成
WindowsではAnaconda Promptから、Macではターミナルから
jupyter notebook –generate-config
を実行してjupyter_[notebook/lab]_config.pyを作成します。
ファイルは以下のディレクトリに作成されます。
[Windowsの場合]
C:\Users\[username]\.jupyter
[Macの場合]
/Users/[username]/.jupyter
作成されるファイルはAnacondaのバージョンによって異なります
[Anaconda3 2020.02(Python 3.7.6 64-bit)] → jupyter_notebook_config.py
[Anaconda3 2020.11(Python 3.8.5 64-bit)]→ jupyter_lab_config.py
2-1. jupyter_[notebook/lab]_config.pyの編集
jupyter_notebook_config.py は
261行目にある[c.NotebookApp.notebook_dir]に
jupyter_lab_config.py は
739行目にある[c.ServerApp.root_dir]に
ディレクトリパスを記述する
#c.NotebookApp.notebook_dir = ”
#c.ServerApp.root_dir = ”
→この部分の先頭の#を削除しコメントを外しディレクトリを記述する
[Windowsの場合]
c.NotebookApp.notebook_dir = r'C:\Users\username\Documents\作業フォルダ1'
c.ServerApp.root_dir = r'C:\Users\username\Documents\作業フォルダ1'
Windowsの場合ディレクトリの区切り文字にバックスラッシュを使っているのでraw文字列として扱うよう、文字列の最初に”r”を記述します。
[Mac]の場合
c.NotebookApp.notebook_dir = '/Users/test/python_workspace'
c.ServerApp.root_dir = '/Users/test/python_workspace'
尚、ディレクトリパスに日本語が含まれる場合は文字コードはUTF-8で保存しないと認識されないようです。(改行コードはLFとしています。)
3. JupyterLabの起動
jupyter_[notebook/lab]_config.py にディレクトリパスを記述、保存後にJupyterLabを起動すると、そのディレクトリをホームとしてJupyterLabは起動されようになります。
4. Window環境で jupyter_[notebook/lab]_config.py の設定が反映されない場合
JupyterLabを起動するショートカットのプロパティの末尾を消す
…upyter-lab-script.py “%USERPROFILE%/
この最後の”%USERPROFILE%/の部分を消すことで設定が反映されるようになりました。
今後の使い方
当面は jupyter_notebook_config.py に複数のディレクトリパスを記述しておき、コメントアウトで切替ながら使っていきたいと思います。
# 案件1
#c.ServerApp.root_dir = r'C:\Users\username\Documents\案件1\python_workspace'
# 案件2
#c.ServerApp.root_dir = r'C:\Users\username\Documents\案件2\python_workspace'
#案件3
c.ServerApp.root_dir = r'C:\Users\username\Documents\案件3\python_workspace'
それでも、まだ若干面倒なので、
ディレクトリの指定 ~ jupyter_lab_config.pyへの記述 ~ JupyterLabの起動
を、まとめて実行できるスクリプトなどを作ろうかと考えています。
と思ったけど・・・
いちいち切り替えて起動しなおすのが面倒なのと、この方法だと別のディレクトリにあるノートを同時に開くことが出来なくなるので、ホームディレクトリに各ディレクトリのショートカット(リンク)を作成する方が便利だということに気づきました。
[Windowsの場合]
Windows には 「ショートカット」「シンボリックリンク」「ジャンクション」「ハードリンク」と4つのリンク方法がありますが、別の場所にあるフォルダへリダイレクトできるジャンクションが最適だと思います。
mklink /J <リンクを作成するフォルダパス> <リンク元のパス>
[Mac の場合]
Macの場合はシンボリックリンクを使います。
ln -s <リンク元のフォルダパス> <作成するシンボリックリンク>
ただ、シンボリックリンクを作った直後、なぜかJupyterLabからそのフォルダを開けないことがありました。どうもファイルの拡張属性というのが関係しているようでリンク元のフォルダに対し
xattr -dr <リンク元のフォルダパス>
とし、拡張属性を削除するとフォルダを開けるようになりましたが、ホントにこの方法が正しいのかよくわかっていません。もう少し調べて見たいと思います。
この方法でノートブックのあるディレクトリを1つのディレクトリにまとめておけば、過去に作成したノートブックをすぐに参照できるようになります。
コメント