jupyter notebookで自作したクラスを自動でimport

データサイエンス

jupyter notebookで自作したクラス(モジュール)をインポートできない

Pythonは自分で作成したクラスを簡単にインポートできます。

from ファイル名 import クラス名

ですが、jupyter notebookで作ったクラスをインポートしようとしても、エラーとなってしまいます。

これは、jupyter notebookでは.pyファイルではなく.ipynbファイルとして保存されるため、クラス(モジュール)のインポートができません。

jupyter notebookで自作したクラス(モジュール)をインポートする方法

自作したクラスをインポートできないようだと、jupyter notebookは正直使い物にならないので、インポートする方法を紹介します。

ファイルをPythonファイルでダウンロード

作成した自作クラス(モジュール)のファイルをjupyter notebook上で「File」→「Download」→「Python(.py)」を選びます。

ファイルを同じフォルダへ移動

ダウンロードしたファイルは通常「ダウンロード」フォルダに保存されるので、そのファイルを自作クラスを参照したい.ipynbファイルと同じフォルダへ移動します。(通常は自作したクラスの.ipynbファイルと同じフォルダで構いません)

これでクラス(モジュール)のインポートが可能になります。

jupyter notebookで.pyファイルを自動作成

これでクラスのインポートはできるようになりましたが、毎回これを行うのは面倒なので、自作クラスを保存するたびに自動的に.pyファイルを生成する方法を紹介します。

jupyter_notebook_config.pyファイルを探す

まず、configファイル(jupyter_notebook_config.py)を探します。通常はホームディレクトの下に.jupyterフォルダがあり、その中に入っています。

jupyter_notebook_config.pyファイルが見つからない場合は作成が必要

もし、 configファイルが見つからない場合はそもそも作成されていない可能性がありますので、その場合は、Anacondaプロンプトなどから下記のコマンドを実行すると jupyter_notebook_config.pyファイルが生成されます。

jupyter notebook --generate-config

.pyファイルを自動保存する関数を作成

この jupyter_notebook_config.pyファイルの最後に、以下を追記して保存します。この関数では.pyファイルと.htmlファイルを自動生成するようになっていますが、 htmlの生成が不要であれば、check_call([‘jupyter’, ‘nbconvert’, ‘–to’, ‘html’, fname], cwd=d) の一行を削除してください。

#--------------------------
# Create html and py file automatically
#--------------------------
import os
from subprocess import check_call
def post_save(model, os_path, contents_manager):
    if model['type'] != 'notebook':
        return
    d, fname = os.path.split(os_path)
    check_call(['jupyter', 'nbconvert', '--to', 'script', fname], cwd=d)
    check_call(['jupyter', 'nbconvert', '--to', 'html', fname], cwd=d)
c.FileContentsManager.post_save_hook = post_save

jupyter notebookを再起動したら完了です。

]]>

コメント

タイトルとURLをコピーしました