Google Colaboratoryのローカルランタイムを使用する

2021-12-24  /  Google ColaboratoryPython

Google Colaboratory で作業したいけど、実行は自分のマシンで行いたいことがあったので設定してみました。Mac 前提です。

既存の Python 環境の確認

過去にインストールした Python3 が入っているはずなので確認します。

$ which -a python3
/usr/local/bin/python3
/usr/bin/python3
$ python3 -V
Python 3.9.9

プロジェクトに閉じた環境を構築する

PC 内のグローバルな Python 環境を汚したくないので venv を利用して virtualenv の環境を構築します。

$ pwd
/Users/kawaken/projects/work/jupyter
$ python3 -m venv .venv
$ ls -la

.venv を利用可能にして確認します。

$ source .venv/bin/activate
(.venv) $ which python
/Users/kawaken/projects/work/jupyter/.venv/bin/python
(.venv) $ python -V
Python 3.9.9
(.venv) $ which pip
/Users/kawaken/projects/work/jupyter/.venv/bin/pip

deactivate で元に戻ります。

(.venv) $ deactivate
$ which python
/usr/bin/python
$ python -V
Python 2.7.10

Google Colaboratory と連携

Google Colaboratory ではローカルランタイムを選択して実行できるので、それに対応します。セットアップ手順はこちらに詳細が記載されています。

Google Colab

$ source .venv/bin/activate
(.venv) $ pip install jupyter
...

(.venv) $ pip install jupyter_http_over_ws
...

(.venv) $ jupyter serverextension enable --py jupyter_http_over_ws
Enabling: jupyter_http_over_ws
- Writing config: /Users/kawaken/.jupyter
    - Validating...
      jupyter_http_over_ws 0.0.7 OK

Jupyter を起動

Google Colaboratory と接続できる状態で起動します。 --no-browser をつけることで起動時にブラウザーが開かないようになります。

(.venv)$ jupyter notebook \
  --NotebookApp.allow_origin='https://colab.research.google.com' \
  --port=8888 \
  --NotebookApp.port_retries=0 \
  --no-browser

起動すると以下のような URL が出力されるので、コピーしておきます。

http://localhost:8888/?token=<ランダムな文字列>

Google Colaboratory でローカルランタイムを指定する

ランタイムに接続する設定でローカルランタイムを選択します。

localhost-https

接続先のポート指定はそのままで(先ほど 8888 を指定して起動しているので)、Jupyter が発行した URL を入力します。

localhost-https

問題なく接続できたら接続先が接続済み(ローカル)になります。試しに ls を利用してローカルのディレクトリを参照してみます。

localhost-https

接続が上手くいかない場合

Google Colaboratory の画面にトラブルシューティングへのリンクが出るので、そこに表示されているコマンドを実行します。どうやら Python のバージョンと jupyter_http_over_ws のバージョンの組み合わせ問題があるようです。