DjangoでiPython/ Jupyter notebookを使う方法

Djangojupyter notebookを使う方法

こんばんは、エンジニアの眠れない夜です。

Djangoの開発中にPythonのスクリプトを書きたいことがありますよね?

そんな時に便利なのがiPython/ Jupyter notebookです。普段から利用している人も多いと思います。

DjangoでiPython/ Jupyter notebookを利用するためには初期設定が必要です。

ここではDjangoでiPython/ Jupyter notebookを使う方法をご紹介します。

jupyter notebookとDjangoの使い方

 

iPython/ Jupyter notebookをDjangoで使うための初期設定

まずは django-extensions をインストールします。

ドキュメントはこちら→django-extensions ドキュメント

pip install django-extensions

Djangoの settingsに ‘django-extensions’を加えます。

INSTALLED_APPS += ['django_extensions']

iPython/ Jupyter notebookを起動するにはDjangoのプロジェクトのホームディレクトリで下記を実行するとiPython/ Jupyter notebookが起動します。

python manage.py shell_plus --notebook

iPython/ Jupyter notebookが起動したら一番初めに下記のコードをコピーアンドペーストして実行します。MYPROJECT にはプロジェクトのホームディレクトリを指定してください。

Python

import os, sys, django
MYPROJECT = '/path/to/my_project' #プロジェクトの絶対パスを指定
sys.path.insert(0, MYPROJECT) #プロジェクトのパスを通す
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "local_settings.py") #settingファイルのパスを通す
django.setup()

from app.models import Foobar
Foobar.objects.all()

Djangoのモデルを使いたいときはviews.pyなどでモデルを読み込むのと同じ要領でインポートします。

from アプリ名.models import モデル名

これでDjangoのモデルなどを活用してスクリプトを書くことができますね^^

 

追記

後、日違うプロジェクトで上記の方法でうまくいかない事があったので追記します。

そして、下記の3行で十分ということが分かりました。



Python

import os,django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "website.settings")#settingファイルのパスを通す
django.setup()

website.settingswebsiteの部分は使用中のプロジェクト名に置き換えてください。

※ 開発環境によってはプロジェクトのルートディレクトリが異なることがあるので、プロジェクトのパスを通してください。
MYPROJECT = '/path/to/my_project' #プロジェクトの絶対パスを指定
sys.path.insert(0, MYPROJECT) #プロジェクトのパスを通す

本番とテストで設定を変更する場合

settingsファイルをローカルと本番環境で使い分けたいときは local_settings などを作成して、そちらを指定してください。

ポイント

2行目で指定するsettingsのファイルのパスが通っていないことが原因で、「そんなモジュールありません」(ModuleNotFoundError: No module named ‘xxx.settings’)とエラーが出ます。

それを2行目で設定してあげれば解決です!

※ django関係のモジュールのimportより先に上記のコード入れてください。順番が逆だとdjangoの設定ができていないのでモデルのimportで同じエラーが出ます。

 

たったこれだけのことです!

これでもう同じところではつまづきませんね^^

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください