なからなLife

geekに憧れと敬意を抱きながら、SE、ITコンサル、商品企画、事業企画、管理会計、総務・情シス、再び受託でDB屋さんと流浪する人のブログです。

Anaconda3でJupyter Notebookを立てたときに、Python2.7も選択できるようにする

何番煎じだよ

って話なんだろうけど、その先人の煎じたヤツがその通りでは動かなかったので。

結局公式サイト記載のやり方が、一番近かった

Installing the IPython kernel — IPython 6.2.0.dev documentation
近いけど、そのままじゃ動かねえし。



一通りJupyter Notebookを立てた後は、Python3.6系しか使えない状態になっています。


その後にやる作業はこれ、って書いてあることが多い。

conda create -n py27 python=2.7 ipykernel
source activate py27  # または source なしのactivate py27

公式サイトでも同じなのですが、この「activate」コマンドが通らない。。。


かいつまんでしまうと、ここを「pyenv local python2の環境名」で逃げれば行けました。


もう少し丁寧に。

先のエントリの通りに環境が立ち上がったところからスタートです。
atsuizo.hatenadiary.jp

なお、anacondaのバージョンが
前回の
anaconda3-5.0.1
から
anaconda-3-5.1.0
に上がっているのであしからず。


conda create -n py27 python=2.7

で、Python2.7.14をダウンロードしてpy27という名前の仮想環境?を作る
バージョンを細かく指定しないと最新のものがインストールされるようです。

pyenv versions

で、認識されているpythonのバージョンリストを確認すると、
先程のコマンドによって

anaconda-3-5.1.0/envs/py27

ができているのが分かります。

このパス情報を使って、activateコマンドの代わりに

pyenv local anaconda-3-5.1.0/envs/py27

を実行してアクティブにします。


pythonのバージョンを

python --version

で確認してpython2.7系がアクティブであることを確認したら、

python -m ipykernel install --user

で、ipythonのカーネルをインストールします。


すると、userのホームの下に隠しディレクトリ「.local」が作成されて、その下の方に、python2のカーネルが登録されます。

ipykernelというモジュールを探して、userディレクトリにインストールする、という意味のようです。



続けて、jupyterが認識したカーネルのリストから確認します。

jupyter kernelspec list

python2だけが認識されています。

Available kernels:
  python2    /root/.local/share/jupyter/kernels/python2


アクティブを

pyenv local anaconda-3-5.1.0

で元のバージョンに戻してから、

jupyter kernelspec list

を実行すると、python3とpython2が登録されていることが確認できます。

Available kernels:
  python2    /root/.local/share/jupyter/kernels/python2
  python3    /root/.pyenv/versions/anaconda3-5.1.0/share/jupyter/kernels/python3

この状態になったら、Jupyter Notebookを起動します。
rootでやっている場合は、--allow-rootオプションもつけます。

jupyter notebook --allow-root

で、Jupyter Notebookを立てたマシンのホスト名orIPアドレス:8888にアクセスしてログインした後、「New」のドロップダウンに「python2」[python3」があることを確認します。


それぞれのバージョンでノートを立ち上げ、

import sys
sys.version

を実行して、想定しているバージョンが返ってくることを確認すれば完了です。

Jupyter Notebookに絞って勉強しなきゃいけないのかなあ

pythonを書くのが本来のお仕事ではない(Python用にAPIが提供されている製品でそっちのほうが性能出るらしいというので試してみたかっただけという)こともあって、相変わらずふんいきでやっているので、行き詰まったときに、Jupyterのレイヤなのかipyhonのレイヤなのかpython(pyenv、anaconda)のレイヤなのかよくわからなくてしばらく嵌りました。

「道具のための道具」の習得に割く時間は最小限に、効率的に済ませたいところです。

PythonユーザのためのJupyter[実践]入門

PythonユーザのためのJupyter[実践]入門