Ubuntu 18.04でPython 3を使用してJupyterノートブックをセットアップする方法

前書き

オープンソースのWebアプリケーションであるJupyter Notebookを使用すると、インタラクティブなコードや視覚化などを作成して共有できます。 このツールは、Python、Julia、R、Haskell、Rubyなどのいくつかのプログラミング言語で使用できます。 多くの場合、データの操作、統計モデリング、機械学習に使用されます。

このチュートリアルでは、Ubuntu 18.04サーバーから実行するようにJupyter Notebookをセットアップする方法と、ノートブックに接続して使用する方法を説明します。 Jupyter Notebooks(または単にNotebook)は、Jupyter Notebookアプリによって作成されるドキュメントで、再現可能な研究の提示と共有に役立つコンピューターコードとリッチテキスト要素(段落、方程式、図、リンクなど)の両方を含みます。

このガイドの最後までに、リモートサーバーで実行されているJupyter Notebookを使用してPython 3コードを実行できるようになります。

前提条件

このガイドを完了するには、基本的なファイアウォールを備えた新しいUbuntu 18.04サーバーインスタンスと、sudo権限が設定された非rootユーザーが必要です。 initial server setup tutorialを実行することで、これを設定する方法を学ぶことができます。

[[step-1 -—- set-up-python]] ==ステップ1—Pythonを設定する

プロセスを開始するには、Pythonプログラミング環境に必要な依存関係をUbuntuリポジトリからインストールします。 Ubuntu 18.04にはPython 3.6がプリインストールされています。 Pythonパッケージマネージャーのpipを使用して、後ほど追加のコンポーネントをインストールします。

最初にローカルのaptパッケージインデックスを更新してから、パッケージをダウンロードしてインストールする必要があります。

sudo apt update

次に、pipとPythonヘッダーファイルをインストールします。これらはJupyterの依存関係の一部で使用されます。

sudo apt install python3-pip python3-dev

これで、JupyterをインストールするPython仮想環境のセットアップに進むことができます。

[[step-2 -—- create-a-python-virtual-environment-for-jupyter]] ==ステップ2—Jupyter用のPython仮想環境を作成します

Python 3、ヘッダーファイル、およびpipの準備が整ったので、プロジェクトを管理するためのPython仮想環境を作成できます。 Jupyterをこの仮想環境にインストールします。

これを行うには、最初に、pipでインストールできるvirtualenvコマンドにアクセスする必要があります。

次を入力して、pipをアップグレードし、パッケージをインストールします。

sudo -H pip3 install --upgrade pip
sudo -H pip3 install virtualenv

-Hフラグは、セキュリティポリシーがhome環境変数をターゲットユーザーのホームディレクトリに設定することを保証します。

virtualenvをインストールすると、環境の形成を開始できます。 プロジェクトファイルを保持できるディレクトリを作成して移動します。 これをmy_project_dirと呼びますが、自分と作業内容に意味のある名前を使用する必要があります。

mkdir ~/my_project_dir
cd ~/my_project_dir

プロジェクトディレクトリ内に、Python仮想環境を作成します。 このチュートリアルでは、これをmy_project_envと呼びますが、プロジェクトに関連するものと呼ぶ必要があります。

virtualenv my_project_env

これにより、my_project_dirディレクトリ内にmy_project_envというディレクトリが作成されます。 内部では、Pythonのローカルバージョンとpipのローカルバージョンがインストールされます。 これを使用して、Jupyter用の分離されたPython環境をインストールおよび構成できます。

Jupyterをインストールする前に、仮想環境をアクティブ化する必要があります。 次のように入力して、それを行うことができます。

source my_project_env/bin/activate

プロンプトが変わり、Python仮想環境内で操作していることを示す必要があります。 (my_project_env)user@host:~/my_project_dir$のようになります。

これで、Jupyterをこの仮想環境にインストールする準備が整いました。

[[step-3 -—- install-jupyter]] ==ステップ3—Jupyterをインストールします

仮想環境をアクティブにして、pipのローカルインスタンスでJupyterをインストールします。

[.note]#Note:仮想環境がアクティブ化されている場合(プロンプトの前に(my_project_env)がある場合)、Pythonを使用している場合でも、pip3ではなくpipを使用します3.3。 ツールの仮想環境のコピーには、Pythonのバージョンに関係なく、常にpipという名前が付けられます。

pip install jupyter

この時点で、Jupyterの実行に必要なすべてのソフトウェアが正常にインストールされました。 これで、ノートブックサーバーを起動できます。

[[step-4 -—- run-jupyter-notebook]] ==ステップ4— JupyterNotebookを実行します

Jupyter Notebookを実行するために必要なものがすべて揃いました! 実行するには、次のコマンドを実行します。

jupyter notebook

Jupyter Notebookのアクティビティのログが端末に出力されます。 Jupyter Notebookを実行すると、特定のポート番号で実行されます。 最初に実行するノートブックは通常、ポート8888を使用します。 Jupyter Notebookが実行されている特定のポート番号を確認するには、起動に使用したコマンドの出力を参照してください。

Output[I 21:23:21.198 NotebookApp] Writing notebook server cookie secret to /run/user/1001/jupyter/notebook_cookie_secret
[I 21:23:21.361 NotebookApp] Serving notebooks from local directory: /home/sammy/my_project_dir
[I 21:23:21.361 NotebookApp] The Jupyter Notebook is running at:
[I 21:23:21.361 NotebookApp] http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72
[I 21:23:21.361 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[W 21:23:21.361 NotebookApp] No web browser found: could not locate runnable browser.
[C 21:23:21.361 NotebookApp]

    Copy/paste this URL into your browser when you connect for the first time,
    to login with a token:
        http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72

Jupyter Notebookをローカルサーバー(サーバーではなく)で実行している場合、表示されたURLに移動してJupyter Notebookに接続できます。 サーバーでJupyter Notebookを実行している場合は、次のセクションで説明するように、SSHトンネリングを使用してサーバーに接続する必要があります。

この時点で、SSH接続を開いたままにしてJupyter Notebookを実行したままにするか、SSHトンネリングを設定したらアプリを終了して再実行できます。 Jupyter Notebookプロセスを停止することにします。 SSHトンネリングを設定したら、再度実行します。 Jupyter Notebookプロセスを停止するには、CTRL+Cを押し、Yと入力してから、ENTERと入力して確認します。 次の出力が表示されます。

Output[C 21:28:28.512 NotebookApp] Shutdown confirmed
[I 21:28:28.512 NotebookApp] Shutting down 0 kernels

ここで、ノートブックにアクセスできるようにSSHトンネルを設定します。

[[step-5 --- connect-to-the-server-using-ssh-tunneling]] ==ステップ5—SSHトンネリングを使用してサーバーに接続します

このセクションでは、SSHトンネリングを使用してJupyter Notebook Webインターフェースに接続する方法を学習します。 Jupyter Notebookはサーバーの特定のポート(:8888:8889など)で実行されるため、SSHトンネリングを使用するとサーバーのポートに安全に接続できます。

次の2つのサブセクションでは、1)MacまたはLinux、および2)WindowsからSSHトンネルを作成する方法について説明します。 ローカルコンピュータのサブセクションを参照してください。

MacまたはLinuxでのSSHトンネリング

MacまたはLinuxを使用している場合、SSHトンネルを作成する手順は、SSHを使用してリモートサーバーにログインする手順と似ていますが、sshコマンドに追加のパラメーターがある点が異なります。 このサブセクションでは、トンネリングを成功させるためにsshコマンドで必要な追加パラメーターの概要を説明します。

SSHトンネリングは、新しいローカルターミナルウィンドウで次のSSHコマンドを実行することで実行できます。

ssh -L 8888:localhost:8888 your_server_username@your_server_ip

sshコマンドはSSH接続を開きますが、-Lは、ローカル(クライアント)ホストの指定されたポートがリモート側(サーバー)の指定されたホストとポートに転送されることを指定します。 これは、2番目のポート番号で実行されているもの(たとえば、 サーバー上の8888)は、最初のポート番号に表示されます(例: ローカルコンピュータの8888)。

オプションで、ポート8888を選択したものに変更して、別のプロセスですでに使用されているポートを使用しないようにします。

server_usernameはユーザー名です(例: 作成したサーバー上のsammy)。your_server_ipはサーバーのIPアドレスです。

たとえば、ユーザー名sammyとサーバーアドレス203.0.113.0の場合、コマンドは次のようになります。

ssh -L 8888:localhost:8888 [email protected]

ssh -Lコマンドを実行してもエラーが表示されない場合は、プログラミング環境に移動してJupyterNotebookを実行できます。

jupyter notebook

URLを含む出力を受け取ります。 ローカルマシンのWebブラウザーから、http://localhost:8888で始まるURLを使用してJupyter NotebookWebインターフェイスを開きます。 トークン番号が含まれていることを確認するか、http://localhost:8888でプロンプトが表示されたらトークン番号の文字列を入力します。

WindowsとPuttyを使用したSSHトンネリング

Windowsを使用している場合は、Puttyを使用してSSHトンネルを作成できます。

まず、次のようにホスト名としてサーバーのURLまたはIPアドレスを入力します。

Set Hostname for SSH Tunnel

次に、左ペインの下部にあるSSHをクリックしてメニューを展開し、Tunnelsをクリックします。 ローカルマシンのJupyterへのアクセスに使用するローカルポート番号を入力します。 他のサービスによって使用されるポートを回避するには、8000以上を選択し、宛先をlocalhost:8888として設定します。:8888は、JupyterNotebookが実行されているポートの番号です。

次に、Addボタンをクリックすると、ポートがForwarded portsリストに表示されます。

Forwarded ports list

最後に、Openボタンをクリックして、SSH経由でサーバーに接続し、目的のポートをトンネリングします。 Webブラウザでhttp://localhost:8000(または選択したポート)に移動して、サーバーで実行されているJupyterNotebookに接続します。 トークン番号が含まれていることを確認するか、http://localhost:8000でプロンプトが表示されたらトークン番号の文字列を入力します。

[[step-6 -—- using-jupyter-notebook]] ==ステップ6— JupyterNotebookを使用する

このセクションでは、Jupyter Notebookの使用の基本について説明します。 現在JupyterNotebookを実行していない場合は、jupyter notebookコマンドで起動します。

これで、Webブラウザを使用してそれに接続する必要があります。 Jupyter Notebookは、多くの機能を備えた非常に強力なツールです。 このセクションでは、ノートブックの使用を開始するための基本的な機能のいくつかを概説します。 Jupyter Notebookには、実行元のディレクトリ内のすべてのファイルとフォルダーが表示されるため、プロジェクトで作業している場合は、プロジェクトディレクトリから起動してください。

新しいノートブックファイルを作成するには、右上のプルダウンメニューからNew>Python 3を選択します。

Create a new Python 3 notebook

これにより、ノートブックが開きます。 これで、セルでPythonコードを実行したり、セルをマークダウンに変更したりできます。 たとえば、上部のナビゲーションバーからCell>Cell Type>Markdownをクリックして、Markdownを受け入れるように最初のセルを変更します。 Markdownを使用してメモを記述できるようになりました。また、$$記号の間に置くことで、LaTeXで記述された方程式を含めることもできます。 たとえば、マークダウンに変更した後、セルに次を入力します。

# First Equation

Let us now implement the following equation:
$$ y = x^2$$

where $x = 2$

マークダウンをリッチテキストに変換するには、CTRL+ENTERを押すと、次の結果が得られます。

results of markdown

マークダウンセルを使用してメモを作成し、コードを文書化できます。 その方程式を実装して結果を出力しましょう。 一番上のセルをクリックし、ALT+ENTERを押してその下にセルを追加します。 新しいセルに次のコードを入力します。

x = 2
y = x**2
print(y)

コードを実行するには、CTRL+ENTERを押します。 次の結果が表示されます。

first equation results

これで、他のPython開発環境と同じように、import modulesしてノートブックを使用できるようになりました。

結論

おめでとうございます。 これで、Jupyter Notebookを使用して、Markdownで再現可能なPythonコードとノートを作成できるはずです。 インターフェイス内からJupyterNotebookのクイックツアーを取得するには、上部のナビゲーションメニューからHelp>User Interface Tourを選択して詳細を確認してください。

ここから、Data Analysis and Visualization with pandas and Jupyter Notebook in Python 3を読み取ることにより、データ分析および視覚化プロジェクトを開始できます。

さらに掘り下げることに興味がある場合は、Time Series Visualization and Forecastingに関するシリーズを読むことができます。