たけのこブログ

凡人が頑張って背伸びするブログ

pyenvの中に複数のanacondaが入っている時のjupyterのパス切り替え

ひっさびさの投稿です笑

 

最近、関係データ解析をやろうと考えていて、jupyterの中でNetworkXの解析を行なったデータをcytoscapeで可視化する一連の動作を全てやりたいと思い、それを実現するためにCyJupyterをインストールする予定でした。

github.com

 

しかし、今まで使っていたanaconda3-4.0.0ではインストールできなかった(ipykernel関連が原因だったと思う)ので、anaconda3-5.3.0を入れた。で、pyenv globalで切り替えしてjupyterを起動したのだが、なぜかpython3のデフォルトのカーネルのsys.pathが以前のanaconda3-4.0.0を参照してしまう...汗

 

対策としては、まずpyenvで切り替えたいanacondaのバージョンに変えた後に/Users/アカウント名/Library/Jupyter/kernelsの中にカーネルの一覧があるので、その中のpython3に移動します。

 

そして、そのフォルダ内にあるkernel.jsonを開くと、以下のようなスクリプトが埋め込まれています。

  1 {                                                                           

  2  language: python,

  3  display_name: Python 3,

  4  argv: [

  5   /Users/user-name/.pyenv/versions/anaconda3-5.3.0/bin/python,

  6   -m,

  7   ipykernel,

  8   -f,

  9   {connection_file}

 10  ]

 11 }

この中の5行目のパスを指定したいpyenvのanacondaのバージョンのパスに変えれば無事にパスが通ります。

 

本当は、anaconda3-4.0.0自体をアンインストールしたかったんですが、なぜかできなかったので、このような措置を取りました。本当は、pyenv自体を綺麗まっさらにしたかったんですが、なんとなく嫌だったのでこんな感じで頑張りました。もしもpyenvの環境自体を綺麗まっさらにしたい場合は以下のサイトを参考にすると良いと思います。

qiita.com

 

余談)

なぜか、anaconda3-5.3.0に切り替えたら、NetworkXの.gml形式のファイルが読み込めるようになりました。今までのanaconda3-4.0.0だとエラー吐き出してて困ってたんですが...とりあえず、これで心置き無く解析できます。

NetworkXで解析したデータをそのままcytoscapeで綺麗に表示できるの嬉しくて脳汁ドヴァドヴァです。