Posted at

Jupyter Notebookの初期ディレクトリを変更する

More than 1 year has passed since last update.

windows10でJupyter Notebookの初期ディレクトリを変更する方法のメモです。


1. jupyter notebookの設定ファイルを作る

Aanaconda Promptで以下を入力

jupyter notebook --generate-config

すると,default configがC:\Users\[ユーザー名]\.jupyter\jupyter_notebook_config.pyに生成されるので,それを開く

(Macの場合はおそらく~/.jupyter/jupyter_notebook_config.pyになる)


2. 設定ファイルを編集する

202行目にc.NotebookApp.notebook_dir = ''という行があるので,コメントアウトの#を消して,設定したいフォルダのパスを入れる

## The directory to use for notebooks and kernels.

#c.NotebookApp.notebook_dir = ''


Usersフォルダ等を指定するときの注意点

コンフィグファイルがPythonであるため,Windowsのパスの書き方をそのまま使うとエラーにハマることがある。

c.NotebookApp.notebook_dir = 'C:\Users'

のように,\Uあるいは\uから始まるようなパスを指定してしまうと,正しくパスが指定されないため,エラーが吐かれるし指定したディレクトリでjupyter notebookが起動しない。

この原因は,Pythonにおいて\Uxxxxxxxx\uxxxxはエスケープシーケンス(特殊な意味を持つ文字列。改行を\nで表すアレの仲間)であるため。

(参考:2. 字句解析 — Python 3.6.5 ドキュメント

Usersフォルダに限らず,Pythonのエスケープシーケンスに引っかかるフォルダ名は全部エラーになる。例えば'C:\abc'とかも\aというエスケープシーケンスがあるのでダメ。


対処法

1. \を表すエスケープシーケンスである\\を使う

c.NotebookApp.notebook_dir = 'C:\\Users'

あるいは,

2. \の代わりに/を使う

c.NotebookApp.notebook_dir = 'C:/Users'


参考:エスケープシーケンス一覧

エスケープシーケンス
意味

\newline
バックスラッシュと改行文字が無視されます

\\
バックスラッシュ (\)

\'
一重引用符 (')

\"
二重引用符 (")

\a
ASCII 端末ベル (BEL)

\b
ASCII バックスペース (BS)

\f
ASCII フォームフィード (FF)

\n
ASCII 行送り (LF)

\r
ASCII 復帰 (CR)

\t
ASCII 水平タブ (TAB)

\v
ASCII 垂直タブ (VT)

\ooo
8 進数値 ooo を持つ文字

\xhh
16 進数値 hh を持つ文字

\N{name}
Unicode データベース中で name という名前の文字

\uxxxx
16-bit の十六進値 xxxx を持つ文字

\Uxxxxxxxx
32-bit の十六進値 xxxxxxxx を持つ文字

(出典:2. 字句解析 — Python 3.6.5 ドキュメント


参考