Jupyter notebookでPEP8を使う


はじめに

この手の記事は探せばいくつかあるのですが、Jupyterがバージョンアップを繰り返すうちに、だんだん古い記事が出てきているので、改めて書くことにしました。

この記事では主にPEP8について扱います。Pyflakesについては分かり次第追記するか、新たに記事としてまとめることにします。

PEP8についてはこちらの記事が参考になります。

やりたいこと

Jupyter notebook上で、Pythonのコーディング規約PEP8に沿ったコーディングチェックを行う。

環境

Mac OS Sierra v10.12.5, Anaconda4.4, Python3.6 (Homebrew), Python2.7 (Homebrew)

手順

その1

まず、jupyter_notebook_config.pyファイルを以下のコマンドを使って作成します。すでに作成されている方は必要ありません。

Terminal
jupyter notebook --generate-config

このファイルは~/.jupyter/以下に保存されます。

その2

pep8をインストールします。私の環境では、jupyterはAnacondaからインストールしたので、Python3とともに、コミュニティバージョンも入れることにしました。(Python環境がこんがらがっているので、少々のソフトウェアの重複は許すことにします。) ご自身の環境の必要に応じて、以下のいずれかのコマンドを打ち込んでください。

Python2.7
pip install pep8
Python3.x
pip3 install pep8
Anaconda
conda install -c conda-forge pep8=1.7.0
# もしくは
conda install -c anaconda pep8=1.7.0

(Jupyterでmodule not foundのエラーが出るときは、Jupyterカーネルが参照しているPythonに対してPEP8がインストールされていない可能性があるので、その場合は別のコマンドを試して見るとよいかと思います。)

その3

ここまででPEP8はコマンドから利用できるようになりましたが、jupyterから使うためには、こちらで公開されている内容を、先程作成したjupyter notebook --generate-configに追加する必要があります。

※以前は./.iPython/extensionsに保存していたようなのですが、こちらに保存するとエラーを吐きます。

以上のようにして利用できるようになったかと思います。最後に、以下スクリーンショットの通り%load_ext pep8magic%%pep8を実行してもエラーが出ないことを確認してください。

このpep8は、整形したソースコードを出すものではなく、エラーを吐く形で警告するものなので、長いソースコードを書くときは、コマンドから実行するほうが良いと思います。とりあえずチェックとしてどうぞ。

参考文献

Pythonのコーディング規約PEP8に準拠する
pep8magic.py