ひよこになりたい

Programming Server Network Security CTF and so on

VSCode+Python+Jupyter Notebookでの開発環境を整える

機械学習(データ分析)をちょっと触りだけやってみようと思い、最近使い始めたVSCodeで環境構築をしてみました Jupyterを使ったことがなかったのでちょっと苦戦しましたが一応動いたので手順を書き記しておきます。 ついでにAnacondaについてくるJupyterを使う場合の手順も記述しておきます。

はじめに

Jupyter(Project Jupyter | Home)はWeb上で様々な言語を実行することのできるツールです。実行するとWebサーバーのようなものが立ち上がり、ブラウザでコードを書いてポチポチして実行できます。データ分析の世界ではメジャーなツールらしいです。

とはいえブラウザ上でコード書くのも微妙だし、毎回ブラウザに移動するのも面倒なのでエディタ上で完結できないか調べたところ、 拡張機能を使ってVSCode上でも実行結果を表示することができるようなので、今回はその環境を構築しました。

こんな感じ f:id:zipsan:20180321035002p:plain

今回はWindowsでやってみましたがたぶんMacとかLinuxでも同じかなと思います。

前提

上記の環境はすでに整っているものとします。入ってない場合はググって適当にインストールしてください

環境構築

Jupyterのインストール

anacondaの仮想環境(Anacondaのcondaコマンドによる仮想環境の使い方のまとめ - minus9d's diary)を入れている場合は不要です。

VSCode上でTerminalを開きます。標準の場合Ctrl+Shift+Pを押し、「python create terminal」でPythonのターミナルパネルを出します。使用するPythonを選択して以下のコマンドを実行します。 f:id:zipsan:20180321035028p:plain

# pipでインストール(anacondaを入れている場合は不要)
python -m pip install jupyter
or
pip install jupyter

# テスト
> jupyter notebook
[I 03:22:50.412 NotebookApp] Serving notebooks from local directory: C:\Users\@@@@
[I 03:22:50.413 NotebookApp] 0 active kernels
[I 03:22:50.413 NotebookApp] The Jupyter Notebook is running at:
(略)

f:id:zipsan:20180321035031p:plain

ワークスペースディレクトリの作成

どこかよしななところに開発用のディレクトリを作成します。今後の設定はこのディレクトリのみ有効になるので、環境が違っても安心です

Jupyterのタスク(バックグラウンド実行環境)の設定

タスク>タスクの構成

f:id:zipsan:20180321040016p:plain

テンプレートからtasks.jsonを生成 f:id:zipsan:20180321040019p:plain

Others 任意の外部コマンドを実行する例 f:id:zipsan:20180321040021p:plain

と進めます。

以下の内容をtasks.jsonに記述します。 "cwd": "R:\\test"の部分は先程作った開発ディレクトリのパスを指定してください。

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Run Jupyter Notebook",
            "type": "shell",
            "command": "cmd.exe",
            "args": [
                "/C",
                "'jupyter notebook'"
            ],
            "group": "none",
            "options": {
                "cwd": "R:\\test"
            },
            "problemMatcher": []
        }
    ]
}

Mac/Linuxの場合は、commandの部分をbash、argsの部分を

"args": [
    "-c",
    "'jupyter notebook'"
],

になるのかなあと思いますが未検証です(検証後追記します)

参考:VSCodeのタスクでjupyter notebookを起動する - Qiita

また、anacondaの仮想環境で実行したい場合はargsの部分を以下のように記述すればOKです。

"args": [
    "/C",
    "'C:\\Users\\[ユーザー名]\\Anaconda3\\Scripts\\activate [仮想環境名] & jupyter notebook'"
],

Jupyterの実行

記述が終わったらタスクの実行をします。

Ctrl+Shift+Pで「task run」と検索して「タスク:タスクの実行」を選ぶ f:id:zipsan:20180321041710p:plain

「Run Jupyter Notebook」を選ぶ f:id:zipsan:20180321041735p:plain

するとJupyterが起動します。選択部分のURLが必要になるのでコピーします。 f:id:zipsan:20180321041827p:plain

Ctrl+Shift+Pで「jupyter enter」と検索し、「Jupyter: Enter the url~」を選ぶ f:id:zipsan:20180321042037p:plain

先ほどコピーしたURLを貼り付けてEnter f:id:zipsan:20180321042159p:plain

これで環境は整いました。

(Option)キーバインドの設定

実行を楽にしたい場合はキーバインドの設定をします。

Ctrl+Shift+Pで「shortcuts」と検索し「基本設定:キーボードショートカットを開く」を選ぶ f:id:zipsan:20180321042417p:plain

高度なカスタマイズを行うには~の keybindings.json を押す f:id:zipsan:20180321042549p:plain

次のように入力し、保存

[
    {
        "key": "ctrl+e ctrl+j",
        "command": "jupyter.execCurrentCell",
        "when": "editorTextFocus"
    }
]

keyのところはご自由にどうぞ

f:id:zipsan:20180321042420p:plain

実行してみる

ディレクトリの中に pythonファイルをつくって、以下を記述。 matplotlibやnumpyがない場合はエラーになります

#%%
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np

x = np.linspace(0, 20, 100)
plt.plot(x, np.sin(x))
plt.show() 


#%%
print("Hello")

うまく言っている場合は #%% の直前に Run cell とでていると思います。

#%% で区切られた部分が1つのセクションとなるので、その中のどこでも良いのでカーソルを移動し、 Ctrl+Shift+Pから「Jupyter run cell」を実行します。(キーバインドの設定をした場合はそれを押せばOK)

カーソルが上のセクションを指定している場合はグラフが表示され f:id:zipsan:20180321043407p:plain

下を指定している場合はHelloが出力されます。 f:id:zipsan:20180321043410p:plain

matploitlibなどがない場合はModuleNotFoundErrorとなりますが、ひとまずこれで実行できるようになりました。