PyCharm

はじめてのPyCharm + Jupyter Notebook(その1)

※このブログ記事で紹介している内容は PyCharm 2021.3 以前の古いユーザーインターフェースを紹介しています。2021.3 以降 PyCharm の Jupyter Notebook 編集画面は、 この記事のような In / Out が左右に表示される形式(Split view)ではなく、(通常のJupyter Notebook と同様な)上下に表示される形式に変更されています。

現在の PyCharm における Jupyter Notebook の連携については

PyCharm Professional オンラインヘルプ: Jupyter ノートブックのサポート

ブログ記事:PyCharm で Jupyter ノートブックを活用する 7 つの方法

をご覧ください。

こんにちは。JetBrains堀岡です。

PyCharm 2019.2からJupyter Notebook連携が新しくなったことはご存知でしょうか? Maria KhalusovaによるPyCharm 英語ブログ「Jupyter, PyCharm and Pizza
でさらっと紹介されていますが、初めての方にお試しいただけるよう、セットアップや基本機能について、もう少し詳しく日本語で紹介したいと思います。はじめてのPyCharm + Jupyter Notebook(その2)と合わせてご覧ください。

PyCharmJupyterBanner1

PyCharmの情報源

macOS上でPyCharm+Jupyter Notebookを試す

テスト環境

本記事作成にあたり、以下の環境で試しています。

  • OS: macOS Catalina 10.15.1
  • Python環境: Anaconda 2019.10/Python 3.7 こちらからダウンロード。conda –version すると4.7.12。(追記 2021/3/4)2020年4月のAnacondaの商用ライセンス形態の変更以降、miniforgeの利用も増えているようです
  • PyCharm Professional 2019.3 RC(Jupyter Notebook連携はProfessional版のみの機能となります。お試しになりたい方はこちらから入手ください。

Anacondaのインストールについて補足

少し前になりますが2019年4月にJetBrainsとAnacondaの戦略的パートナーシップが発表 されています。2019年11月現在、AnacondaをインストールするとAnaconda Plugin入りのPyCharmがオススメされるようになっています。ただし、既にPyCharm Professionalをお使いの方はPyCharm for Anacondaや追加プラグインのインストールは不要です。

画像

PyCharmプロジェクト作成とPythonインタープリタの指定

PyCharmでJupyter Notebookを実行するためにはPyCharmのプロジェクトを作成する必要があります。PyCharmを起動して「Create New Project」を選択します。

スクリーンショット 2019-11-29 16.31.29

PyCharmの新規プロジェクト作成画面では、Project InterpreterでConda仮想環境(プロジェクトで使用するPython環境)を新規作成するか、既存のconda環境を再利用するか選択することができます。

以下の例では、「New environment …」を選択し(Python管理環境としてCondaが選択されることも確認ください)プロジェクト専用のConda仮想環境を作成します。

(補足)Conda executableの場所はmacOS Catalina以降「 ~/opt/anaconda3」に変更になっています。macOS Catalinaに移行されていない方はパスが「/anaconda3」等になっているはずです。

スクリーンショット 2019-11-24 20.22.07

プロジェクトを作成できたら、PyCharm画面下部のTerminalから「conda env list」コマンドで

  • プロジェクト用のConda仮想環境が生成されていること
  • 生成されたConda仮想環境がactivateされていること(「*」がついている)

を確認します。Conda仮想環境に問題があると、terminalを開いたタイミングで生成されたpython環境がactivateされないことがあるのでご注意下さい

conda env list

フォルダ構成、解析データの準備

さて、プロジェクトが作成できたので、英語ブログ同様、データ用のフォルダ(data)とnotebook用のフォルダ(notebooks)を作成します。

「JupyterPizza(プロジェクト)を選択」後「右クリック」 または 「command+n」 でポップアップ表示し、「Directory」を選択  でフォルダを作成できます。

スクリーンショット 2019-11-24 20.37.21

解析データも英語ブログに従い、KaggleからPizza Restaurants and the Pizza They Sellのデータを取ってきます。zipファイルを展開してdataディレクトリ以下に置きます(dataフォルダにpizza-restaurant…フォルダをコピー&ペースト)。

スクリーンショット 2019-11-29 16.46.09

コピーされたCSVファイルを開いてみます。CSV用のプラグインをインストールするか、「Shift連打 または Shift + Cmd + A」「”table”を入力」で表示される「Edit as Table」アクションを実行すると、CSVファイルを表形式で確認することができます。

スクリーンショット 2019-11-24 21.02.44

以下は「Edit as Table」アクションによる表示例です。

スクリーンショット 2019-11-24 21.07.08

Notebookファイルの作成とJupyter Serverの起動

Jupyter Notebookファイルの作成と編集

次にJupyter Notebookファイルを作成します。画面右Projectペインのnotebooksフォルダを「右クリック」または「Cmd + N」でポップアップを表示し、Jupyter Notebookファイルを作成します。

スクリーンショット 2019-11-24 21.27.33

pizza.ipynbファイルを作成しました。ファイルを開き、以下のコードを足します。csvファイルのパスが異なる場合は調整してください。PyCharm 2019.3からread_csvに指定するファイルパスの補完もできるようになっています😎

import pandas as pd
df = pd.read_csv("../data/pizza-restaurants-and-the-pizza-they-sell/Datafiniti_Pizza_Restaurants_and_the_Pizza_They_Sell_May19.csv")
df.head()

すると、以下の画面のように

  • 右上に”Install jupyter package”というメッセージ
  • コードの中”import pandas”に赤色で波線

が表示されます。

スクリーンショット 2019-11-30 0.14.17

今回の場合、Conda仮想環境にjupyterやpandas packageが入っていないので、このようなメッセージが表示されます。”Install jupyter package”メッセージをクリックするとjupyterのinstallが開始されます。PyCharmはインストールされたパッケージ情報を解析するので、この処理にはしばらく時間がかかります。

pandasのエラーの方は、赤波線をクリックして、「option + Enter」または赤電球アイコンをクリックするとPyCharmが「Install package pandas」を提案しますので、こちらを選択し、インストールします。

スクリーンショット 2019-11-30 0.20.02

(補足)Packageのインストール・確認について

ただし、このようにPythonのpackageをPyCharmが指摘する毎に1つずつインストールすると、「パッケージのインストール => PyCharmのindex処理待ち」が繰り返されるので、もし、導入すべきパッケージが分かっている場合は、面倒に思えるかもしれません。その場合は、PyCharmの起動直後にPyCharmのTerminalから「conda install <package1> <package2> …」でインストールしたほうが効率的でしょう(macOSのTerminalを使う場合は、conda activate <環境名>の実行を忘れずに! さもない別のPython環境にパッケージをインストールすることになります)。

conda install

または、インストール済みパッケージ一覧やパッケージの追加・削除はPreference – Project – Project Interpreterから行うことができるので、こちらを活用してもよいでしょう。

Projecdt Interpreter

Jupyter Notebookの実行

ということで、パッケージ関係のメッセージが消えたら、エディタペインの緑色の三角をクリックし、「Run Cell」を選びセルを実行します。

スクリーンショット 2019-11-30 0.46.19

(Jupyter Serverが起動されていない状態なので)PyCharmがJupyter Serverを起動し、Notebookが実行されました🎉

first jupyter run result

Run Cellの代わりに、セル上にブレークポイントをセットし、デバッグ実行(Debug Cell)も可能です。

RunDebug

複雑なコードを書いていたり、期待通りの結果が出ない場合、簡単にデバッグできるのはPyCharmを使用するメリットの1つでしょう。

debug

Jupyter Notebook編集・実行画面の説明

オンラインヘルプのJupyter Notebookのセクションに詳細な説明がありますが、PyCharm上でのJupyter Notebookの基本操作を見ていきたいと思います。

セルの編集・追加

PyCharm上では編集画面左の「+」ボタンでセルを追加することができます。

add cell

または、以下のコメント行を追加すると新しいセルとして認識されます。

cell types

その他の詳細はオンラインヘルプJupyterノートブックファイルの編集をご参照ください。

表示領域・対象の調整

PyCharmのJupyter Notebookの基本編集画面は、Editor(コード編集)領域とPreview(実行結果を表示)領域が横並びで表示されるので、表示のための横幅が必要です。「Command + 1」または画面左端の[1: Project]をクリックすると、ファイルビューが非表示になりコード編集エリアと結果(Preview)エリアを広く表示することができます。

project view

画面右上のアイコンによりコード編集画面・(実行結果)プレビュー画面の表示方法の選択・調整ができます。

editor icons

それぞれのアイコンの説明はマニュアルに記載されています。クリックして表示の違いを試してみて下さい。

icon doc

表示ボタンの代表的な使い方として、分析・コーディング中にコードを実行しながらプレビュー画面を見るには、以下の組み合わせが良さそうです。

review_with_code

edit and preview

一方で、ブラウザ版と似たUIでセルのコードを見ながら結果の確認を主に行いたい場合は、以下の組み合わせを利用すると良さそうです。

edit

code and review

Jupyter Notebookの操作

コード編集画面左上の黄色電球アイコンをクリックすると、Jupyter Serverの起動・停止や、全てのセルのクリア(Clear outputs)、様々なパターンのセル実行が可能です。

スクリーンショット 2019-11-29 20.07.09

電球アイコンの隣の緑色の二重三角アイコンで、全てのセルを実行(Run All)できます。前述のClear Outputsと合わせて、クリーン再実行する際に利用します。

スクリーンショット 2019-11-29 20.10.57

Jupyterツールウィンドウ

Jupyter Notebookを実行するとPyCharm画面下部にJupyter専用のツールウィンドウが表示されます。タブごとに様々な情報が表示されます。以下簡単に紹介します。

Variables タブ

Variablesタブでは最後に実行したセルの変数情報を確認することができます。あえてデバッガを起動しなくても、セル単位で実行しながら、気になる変数を確認できれば十分という場合に便利です。ウィンドウ内でタイプすることにより、検索も可能です。

variable tab

Server: <プロジェクト名> タブ

起動したJupyter Serverの情報は画面下部のJupyterツールウィンドウの「Server: <プロジェクト名>」タブに表示されるログから確認することができます。また、Server: <プロジェクト名> タブでは、Jupyter Severの起動・停止を行うことができます。

スクリーンショット 2019-11-24 21.48.44

ログ中の「http://localhost:8888…」をクリックすることによりJupyter Serverにブラウザから同じカーネルを使っているJupyter Severにアクセスすることも可能です。また、PyCharm 2019.3よりIDE外でNotebookが変更された場合、IDEが変更を検出し、同期するようになりました。ブラウザ上の結果のほうが見やすいケースや、ブラウザからNotebookを少し変更して試してみたいという事ももあると思うので、必要に応じて合わせて利用すると良いでしょう。

opennotebook with browser

Jupyter Notebook開発における制限事項

PyCharmを用いてJupyter Notebook開発を行う際、通常の.pyファイル開発の全ての機能が使えるわけではありません。以下に代表的な制限事項を紹介します。

  • PY-30784 .pyが存在せずコードがindex化されないため、.ipynbファイルの中のシンボルはrefactoringやfind usageの対象外
  • PY-35591 エディタのパフォーマンス問題
  • サポートされているテーマ(配色)はLight(白系)またはDarculaのみ
  • その他既知バグやfeature request(機能追加リクエスト)は課題トラッカーでご確認ください。  https://youtrack.jetbrains.com/issues/PY?q=jupyter%20%23Unresolved  安定性の改善やリモート環境に対する充実したサポート等、様々な項目が挙げられています😅自分が遭遇したバグで早期対応を希望するものや、望んでいた機能があればぜひvoteしてください。

vote_issue

まとめ

PyCharm で  Jupyter Notebook ってどんな感じなのか?初めての皆さんに簡単にお試しいただき、基本機能をご理解いただけるよう、セットアップから実行まで、私自身も初めて試しながら記事を書きました。次回のブログはじめてのPyCharm + Jupyter Notebook(その2)では、英語ブログで紹介されているNotebookを使って、チャートの表示等も試しますので、ぜひ合わせてご覧ください。

簡単に試せると思いますので、PyCharmを使っていてJupyter Notebookを試したい方も、Jupyter Notebookを使っていて、よりコードを生産的に書きたい方は PyCharm Professional をお試しいただければと思います。

Jupyter Notebook関連の全ての機能をご覧になりたい方は以下のオンライン・ヘルプをご覧ください。

使いこなしている皆さんからのコメント・フィードバックは大歓迎ですのでお待ちしています🙇🏻‍♂️

image description

Discover more