【jupyter notebook】No such file or directoryエラーを回避
今回はjupyter notebookを使用する際の「No such file or directory」エラーについて取り上げたいと思います。
翻訳すると「そのようなファイル、又はディレクトリはありません」といった意味になりますが、最初は訳が分かりませんでした。
エラー内容のディレクトリを確かめてみると、過去に作成したディレクトリであることに気が付いてますます??の極みでした。
なぜなら既にそのディレクトリは削除してしまっている為このjupyter notebookの設定は何を読み込んでいるのかさっぱり謎でした。
実際今に至るまでipythonインタプリタを活用していました。
最終的にこのエラーを回避することができましたが私が行った手順をご紹介したいと思います。
実行環境 |
---|
Windows Subsystem for Linux |
Python 3.6.8 |
pip 9.0.1 |
No such file or directoryのエラー内容である
「/mnt/c/Users/warik/Documents/PYTHON/test1/share/jupyter/kernels/python3」
の経緯ですがPYTHONディレクトリにtest1というpythonの仮想環境venvでjupyter notebookを構築したのは覚えています。
そして別の仮想環境でjupyter notebookを構築したらKernel errorでハマってしまいその時は分からず終いで諦めてしまいました。
それから数ヶ月が経った今と言う事になります。
しっかり調べて行くと、エラー内容は絶対パスとして設定ファイルに設定されている為、いくら再インストールして環境を構築しても絶対パスに従わなければKernel errorを起こします。
なのでエラーを引き起こしている設定ファイルを探す必要がありました。
調べて分かった事は、jupyterのJSONファイルであるkernel.jsonで環境変数の設定が行えると言う事。
ただpythonの仮想環境venvで構築したjupyerのkernel.jsonでは、先ほどの絶対パスとは違います。
vimコマンドでjsonファイルの中身を開いた場合
# /mnt/c/Users/warik/Documents/PYTHON/test2/share/jupyter/kernels/python3/kernel.json
{
"argv": [
"python", ←ここで環境変数を設定
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}"
],
"display_name": "Python 3",
"language": "python"
}
仮想環境内のディレクトリでは無い事は分かったので、rootディレクトリからそれらしいファイルを探していきました。
すると隠しフォルダ内にjupyterのフォルダを確認することが出来ました。
# カレントディレクトリの確認
$ pwd
/home/name
# .などの隠しフォルダの確認
$ ls -a
.local .... .... ....
.localディレクトリからjupyterのディレクトリへ辿って行くと、kernel.jsonを見つけることができました。
# viコマンドでエディタを開く
$ vi .local/share/jupyter/kernels/python3/kernel.json
# .local/share/jupyter/kernels/python3/kernel.json
{
"argv": [
"/mnt/c/Users/warik/Documents/PYTHON/test1/share/jupyter/kernels/python3", ←絶対パス
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}"
],
"display_name": "Python 3",
"language": "python"
}
絶対パスで設定されている場所を書き換え
# .local/share/jupyter/kernels/python3/kernel.json
{
"argv": [
"python", ←書き換え後
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}"
],
"display_name": "Python 3",
"language": "python"
}
動作確認
# 仮想環境
(test2)$ pip3 install jupyter
(test2)$ jupyter notebook
http://localhost:8888/?token=6ef141..............
上手く繋がりました。
通常の環境でもpipを使いjupyterをインストールして起動したところ問題ありませんでした。
別の仮想環境でもバッチリでした。
しかしなぜ隠しフォルダの設定ファイルに絶対パスが設定されていたのかは不明です。
最初の(初めての)インストール時にデフォルトとして設定されたのか何らかの操作で設定されてしまったのか定かではありません。
これでやっと高機能であるjupyterでデータ分析が行えるのでとりあえず一件落着しました。
それでは以上になります。
最後までご覧いただきありがとうございました。