LoginSignup
3
1

More than 3 years have passed since last update.

Macでjupyter-notebookが起動できない時の対処法(エラー:No such file or directory)

Last updated at Posted at 2019-12-15

現象

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)」を選択してインストールしてしまうと起きるようです。

image.png

このエラーはPythonのバージョンで2.7を選択して環境構築した際に発生しました。
なので新しくPython3.7で環境を作り直してjupyter-notebookをインストールし直せば問題なく動作するはずです。

image.png

jupyter-notebookをインストールして実行する。
するとブラウザにjupyter-notebookが開きます。

それでも治らない時に

自分がこの解決策を見つけるまでに色々試した過程を載せておきます。

1. シェルスクリプトの修正

とりあえず何が起こっているのか調べるために、jupyter_mac.commandを見てみます。

/opt/anaconda3/envs/base (root)/bin/jupyter_mac.commandを開きます。

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とエラーが出ているので以下のように変更します。

jupyter_mac.command
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. 環境名を変更

改めて環境名を空白スペースの含まないものに変えて実行してみた。

image.png

jupyter-notebookをインストールして実行する。
するとブラウザにjupyter-notebookが開きます。

まとめ

まとめると、
1. dirname $0を使うときはdirname "$0"にする。
2. 環境名に空白スペースを入れない

そもそもbase (root)の環境が何なのかすら理解していないのが良くなかったのかな。状況によって解決策も変わると思いますので、1つの参考程度に利用ください。

参考サイト

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1