Skip to content

Instantly share code, notes, and snippets.

@EtsuNDmA
Last active February 25, 2022 00:52
Show Gist options
  • Save EtsuNDmA/85a20b0b8cf5ec4e12352507b14f9762 to your computer and use it in GitHub Desktop.
Save EtsuNDmA/85a20b0b8cf5ec4e12352507b14f9762 to your computer and use it in GitHub Desktop.
Интеграция Django с Jupyter (JupyterLab)

Django_jupyter

Руководство по интеграции Django и Jupyter

Способ 1 (с использованием shell_plus)

Считаем, что django и jupyter уже установлены

  1. Установить django-extensions

    pip install django-extensions
  2. Добавить django-extensions в settings

    INSTALLED_APPS += ['django_extensions']
  3. Добавить настройки jupyter в settings

    NOTEBOOK_ARGUMENTS = [
        '--ip', '0.0.0.0',
        '--port', '8888',
    ]
    IPYTHON_KERNEL_DISPLAY_NAME = 'Django Kernel'

    Все настройки можно посмотреть в справке по jupyter

    jupyter --help-all
  4. Установить JupyterLab. Это не обязательно, но очень удобно. Для того, чтобы JupyterLab запускался по умолчанию, добавьте следующий строки в настройки Django

    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

    PYTHONPATH=$(pwd):$PYTHONPATH python manage.py shell_plus --notebook

    В браузере должна открыться страница http://[ip]:[port]/tree или http://[ip]:[port]/lab, если настроен JupyterLab

  6. Создаем новый ноутбук используя kernel Django Kernel выполнив следующую строку в ноутбуке, увидим, что все модели уже импортированы

    locals()

    WARNING Если приложения имеют модели с одинаковыми именами, то разрешение имен происходит, согласно указанному collision resolver (см.документацию к django-extensions)

Способ 2

Этот способ не требует установки django-extensions. Однако, он менее удобный при дальнейшей эксплуатации

В начале каждого ноутбука выполняем инициализацию django

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()

Далее можем импортировать компоненты приложения

from myapp.models import Vehicle
Vehicle.objects.count()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment