# Django_jupyter Руководство по интеграции Django и Jupyter ## Способ 1 (с использованием shell_plus) Считаем, что [django](https://docs.djangoproject.com/) и [jupyter](http://jupyter.org/install) уже установлены 1. Установить [django-extensions](https://github.com/django-extensions/django-extensions/blob/master/docs/index.rst) ```bash pip install django-extensions ``` 2. Добавить django-extensions в settings ```python INSTALLED_APPS += ['django_extensions'] ``` 3. Добавить настройки jupyter в settings ```python NOTEBOOK_ARGUMENTS = [ '--ip', '0.0.0.0', '--port', '8888', ] IPYTHON_KERNEL_DISPLAY_NAME = 'Django Kernel' ``` Все настройки можно посмотреть в справке по jupyter ```bash jupyter --help-all ``` 4. Установить [JupyterLab](https://jupyterlab.readthedocs.io). Это не обязательно, но очень удобно. Для того, чтобы JupyterLab запускался по умолчанию, добавьте следующий строки в настройки Django ```python try: import jupyterlab notebook_default_url = '/lab' # Using JupyterLab except ImportError: notebook_default_url = '/tree' # Using Jupyter NOTEBOOK_ARGUMENTS = [ '--ip', '0.0.0.0', '--port', '8888', '--notebook-dir', PATH_TO_NOTEBOOK_DIR, '--NotebookApp.default_url', notebook_default_url), ] IPYTHON_KERNEL_DISPLAY_NAME = 'Django Kernel' # if you want to use Chrome by default # os.environ.setdefault('BROWSER', 'google-chrome') ``` 5. Запустить jupyter ```bash PYTHONPATH=$(pwd):$PYTHONPATH python manage.py shell_plus --notebook ``` В браузере должна открыться страница http://[ip]:[port]/tree или http://[ip]:[port]/lab, если настроен JupyterLab 6. Создаем новый ноутбук используя kernel *Django Kernel* выполнив следующую строку в ноутбуке, увидим, что все модели уже импортированы ```python locals() ``` > **WARNING** > Если приложения имеют модели с одинаковыми именами, то разрешение имен происходит, согласно указанному collision resolver ([см.документацию к django-extensions](https://django-extensions.readthedocs.io/en/latest/shell_plus.html#collision-resolvers)) ## Способ 2 Этот способ не требует установки django-extensions. Однако, он менее удобный при дальнейшей эксплуатации В начале каждого ноутбука выполняем инициализацию django ```python import os, sys import django PROJECTPATH = '/my/django/project/path' sys.path.insert(0, PROJECTPATH) os.environ.setdefault("DJANGO_SETTINGS_MODULE", "my.django.settings.module") os.chdir(PROJECTPATH) django.setup() ``` Далее можем импортировать компоненты приложения ```python from myapp.models import Vehicle Vehicle.objects.count() ```