AWSにpythonとjupyter labをさっくり導入する
- モチベーション
- 使用したインスタンスおよび設定
- 準備
- pythonのアップグレード
- jupyter notebookのインストール
- jupyter labのインストール
- jupyter labの自動起動
モチベーション
- anacondaを使うとjupyter labまで自動で入るので便りっちゃ便利
- だけれどもかなり容量を食うし、anacondaそのものが不評である声が聞こえてくる
- とりあえずpython実験用に小さいインスタンスを作るのであれば、それ自体を隔離された環境と考えて、venvも不要として良い
- であれば、小さいインスタンスでさっくりjupyter labを使える環境が作れると便利なんじゃないか
- 結構情報が散在していたため、いくつかのサイトの情報をつなぎ合わせて一連の流れになるようにしたかった
※念のため、今回の手順でどれくらい容量を食うのか確認してみた
準備
まずはお約束でapt-get updateとupgradeをしておく。
sudo apt-get update sudo apt-get upgrade
pythonのバージョンを確認すると、
python3 --version
Python 3.5.2
デフォルトでpython3.5.2が入っている
このままでも良いが、せっかくなのでアップグレードしてみる
pythonのアップグレード
まずpipをインストールする
sudo apt install python3-pip python3-dev sudo apt install python-pip python-dev
この段階でまだ6.4GBの余裕がある
df -h udev 488M 0 488M 0% /dev tmpfs 100M 3.3M 96M 4% /run /dev/xvda1 7.7G 1.4G 6.4G 18% / tmpfs 496M 0 496M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 496M 0 496M 0% /sys/fs/cgroup /dev/loop0 87M 87M 0 100% /snap/core/5145 /dev/loop1 13M 13M 0 100% /snap/amazon-ssm-agent/295 tmpfs 100M 0 100M 0% /run/user/1000
python3.6をインストールする。
sudo add-apt-repository ppa:jonathonf/python-3.6 sudo apt-get update sudo apt-get install python3.6 python3.6-dev wget https://bootstrap.pypa.io/get-pip.py sudo python3.6 get-pip.py
確認すると、
python3 --version
Python 3.5.2
python3というコマンドはpython3.5.2にひもづけられており、
python3.6 --version
Python 3.6.5
3.6はpython3.6というコマンドでないといけない。
なんにせよ、python3.6.5がインストールされた。
jupyter notebookのインストール
export LC_ALL=C sudo apt-get update sudo apt-get install -y python-pip libpq-dev python-dev libpng12-dev libjpeg8-dev libfreetype6-dev libxft-dev sudo pip install -U pip sudo pip install numpy pandas matplotlib seaborn scikit-learn plotly ipython[notebook]
最初のexportうんたらはいらない可能性もある。
次にjupyterのコンフィグファイルを生成する。
jupyter notebook --generate-config
これで上記コマンドを実行したディレクトリの直下(今回はホームディレクトリ)に.jupyterディレクトリが作られ、そのディレクトリ内にjupyter_notebook_config.pyというテキストファイルが生成されるので、viでいじる。
vi ~/.jupyter/jupyter_notebook_config.py
ファイルの先頭に以下の行を追加する
c.NotebookApp.ip = '*' c.NotebookApp.open_browser = False c.NotebookApp.port = 8890 c.NotebookApp.password = ''
ポート番号は各自のセキュリティグループの設定に合わせる。jupyterのデフォルトは8888らしい。
ただし、最初はpasswardの中身は空にし、以下のコマンドで暗号化パスワードを取得する。
その後、再度コンフィグファイルを編集してパスワードを追加する。
python3.6 -c "import IPython;print(IPython.lib.passwd())"
表示されたsha1:で始まる文字列をコピペすれば良い。
jupyter notebook
でjupyterを起動し、パブリックIP:ポート番号でブラウザでアクセスできればOK。
この段階で残り5.7GB。jupyterが意外に容量を食うよう。
df -h Filesystem Size Used Avail Use% Mounted on udev 488M 0 488M 0% /dev tmpfs 100M 3.3M 96M 4% /run /dev/xvda1 7.7G 2.1G 5.7G 27% / tmpfs 496M 0 496M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 496M 0 496M 0% /sys/fs/cgroup /dev/loop0 87M 87M 0 100% /snap/core/5145 /dev/loop1 13M 13M 0 100% /snap/amazon-ssm-agent/295 tmpfs 100M 4.0K 100M 1% /run/user/1000
jupyter labのインストール
wshinya.hatenablog.com
nonbiri-tereka.hatenablog.com
まずjupyterのバージョンを確認する。
jupyter notebook --version
5.6.0
jupyterのバージョンが5.3以上ならば何の問題もなくインストールできるそうな。
pip install jupyterlab --user
※--userだとうまく行かなかったので入れてみた。
jupyter lab
でjupyter labを起動できる。
パブリックIP:ポート番号でブラウザでアクセスできればOK。
jupyter labの自動起動
このままだと毎回ターミナルを立ち上げてjupyterを起動しないといけないのでものすごく不便。
なので、インスタンス起動時にjupyter labが自動起動するように設定する。
まず、以下のコマンドでjupyter-labのフルパスを取得する。
which jupyter-lab
/home/ubuntu/.local/bin/jupyter-lab
今回の環境でのフルパスは上記の通り。
自動起動用のシェルを作る。
touch ~/start_jupyter.sh
これでホームディレクトリ直下にstart_jupyter.shなるシェルスクリプトが生成される。まだ中身は空なので、作成したシェルにvi等で先ほどのフルパスを書き込む。
chmod 777 ~/start_jupyter.sh
インスタンス起動時に上記のシェルが実行されるよう、root権限で/etc/rc.localを編集する。
sudo vi /etc/rc.local
exit 0の前にsu - ubuntu /home/ubuntu/start_jupyter.sh &を書き込んで保存終了
インスタンスを再起動させ、jupyter labにアクセスしてみる。
sudo shutdown -r now
割と時間がかかり、かついつ再起動が完了したのかAWSのコンソールだけではわからないので、何回かやってみよう。
アクセス出来なさそうならいっそのことインスタンスをいったん終了させてから再度起動してみるのも良い。
jupyter labでは内部でterminalを開くことができるので、いちいちterminalを起動しなくても良い。
ライブラリのインストールとかそういう時に便利。
なお、jupyter lab内で立ち上がるpythonのバージョンは3.6.5であった。
jupyter labからconsole立ち上げ時に表示される内容
Python 3.6.5 (default, May 3 2018, 10:08:28) Type 'copyright', 'credits' or 'license' for more information IPython 6.5.0 -- An enhanced Interactive Python. Type '?' for help.
ちなみに、ここまでやって残り5.6GBなので、手っ取り早く(お安く)jupyter環境を作るならこれで良いのではないかと。
※jupyter labで立ち上げられるterminalからコピペができなかった!
df -h Filesystem Size Used Avail Use% Mounted on udev 488M 0 488M 0% /dev tmpfs 100M 3.3M 96M 4% /run /dev/xvda1 7.7G 2.2G 5.6G 28% / tmpfs 496M 0 496M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 496M 0 496M 0% /sys/fs/cgroup /dev/loop0 87M 87M 0 100% /snap/core/5145 /dev/loop1 13M 13M 0 100% /snap/amazon-ssm-agent/295 tmpfs 100M 8.0K 100M 1% /run/user/1000