現象
AnacondaをインストールしてJupyter-notebookを起動してみたが動かない。
エラー内容は以下
usage: dirname path
/opt/anaconda3/envs/base (root)/bin/jupyter_mac.command: line 3: /jupyter-notebook: No such file or directory
環境
- anaconda3
- macOS : Catalina 10.15.1
解決策
この現象はjupyter-notebookをインストールした際に、エラーによりインストールに失敗し、新しい環境を作り直す時に「base (root)」を選択してインストールしてしまうと起きるようです。
このエラーはPythonのバージョンで2.7を選択して環境構築した際に発生しました。
なので新しくPython3.7で環境を作り直してjupyter-notebookをインストールし直せば問題なく動作するはずです。
jupyter-notebookをインストールして実行する。
するとブラウザにjupyter-notebookが開きます。
それでも治らない時に
自分がこの解決策を見つけるまでに色々試した過程を載せておきます。
1. シェルスクリプトの修正
とりあえず何が起こっているのか調べるために、jupyter_mac.commandを見てみます。
/opt/anaconda3/envs/base (root)/bin/jupyter_mac.command
を開きます。
DIR=$(dirname $0)
$DIR/jupyter-notebook
.command拡張子はシェルスクリプトですが、知識がなかったので調べてみると
- $0:このファイルの絶対パスを取得
- dirname : パス名からディレクトリパス名部分の文字列を取り出す
つまり、$0で/opt/anaconda3/envs/base (root)/bin/jupyter_mac.command
が取得され、dirnameの引数に入れることでファイル名が取り除かれ、/opt/anaconda3/envs/base (root)/bin/
になる。それを変数DIRに入れているようです。
しかし、これが上手く動かず、usage: dirname path
とエラーが出ているので以下のように変更します。
DIR=$(dirname "$0") # $0を""で囲む
$DIR/jupyter-notebook
これで再度jupyter-notebookを実行。
/opt/anaconda3/envs/base (root)/bin/jupyter_mac.command: line 3: /opt/anaconda3/envs/base: No such file or directory
とりあえずusage: dirname path
というエラーは消えます。
しかし、パスに空白スペースがあるため、途中で途切れてしまっています。
2. 環境名を変更
改めて環境名を空白スペースの含まないものに変えて実行してみた。
jupyter-notebookをインストールして実行する。
するとブラウザにjupyter-notebookが開きます。
まとめ
まとめると、
-
dirname $0
を使うときはdirname "$0"
にする。 - 環境名に空白スペースを入れない
そもそもbase (root)の環境が何なのかすら理解していないのが良くなかったのかな。状況によって解決策も変わると思いますので、1つの参考程度に利用ください。
参考サイト