-
Django 에서 Jupyter Notebook 을 사용할 때 서브 디렉터리를 기본으로 설정하는 방법기술/Django 2021. 9. 24. 20:12
장고에서 django-extensions 를 설치했다면 아래의 명령어를 수행하여 Jupyter notebook 에서 Django 를 로딩할 수 있습니다.
$ python manage.py shell_plus --notebook
이 때 노트북이 로딩되는 기본 폴더를 서브디렉터리로 할 경우 Django 를 제대로 로딩할 수 없는 문제가 있습니다.
방법
프로젝트 레이아웃
장고 프로젝트의 구조가 현재 아래와 같이 되어있을 때 project/notebooks 폴더를 노트북을 켰을 때 기본으로 설정하고 싶다고 가정합니다.
/project /users /notebooks # 이 폴더를 노트북의 기본 폴더로 설정하고 싶습니다. SampleNotebook.ipynb manage.py
settings.py
django-extensions 를 설치했다면 Jupyter notebook 실행 설정을 settings.py 에서 설정할 수 있습니다.
# jupyter notebook --notebook-dir notebooks # 위의 명령어처럼 실행될 수 있도록 설정을 추가합니다. NOTEBOOK_ARGUMENTS = [ '--notebook-dir', 'notebooks', ]
notebooks/ipython_config.py
Jupyter notebook 이 실행될 때 기본적으로 로드하는 파일을 설정하여 Django 가 제대로 로딩될 수 있도록 설정해줍니다.
import sys import os FOLDER_PATH = os.path.abspath(os.path.dirname(__file__)) PROJECT_BASE_PATH = os.path.abspath(os.path.join(FOLDER_PATH, '..')) sys.path.insert(1, PROJECT_BASE_PATH)
실행
위의 설정을 하지 않고 python manage.py shell_plus --notebook 을 실행하면 기본적으로 projects/ 폴더에서 노트북이 켜지지만
위의 설정을 하고 python manage.py shell_plus --notebok 을 실행하면 projects/notebooks 폴더에서 노트북이 켜집니다.
참고
'기술 > Django' 카테고리의 다른 글
'Settings' object has no attribute 'worker_state_db' (0) 2021.09.25 Django Rest Framework 의 APITestCase 에서 API 를 요청할 때 Body 데이터를 보내는 두가지 방법 (0) 2021.09.24 Traefik vs Caddy (1) 2021.09.24 django 에서 select_related, prefetch_related 에서 추가적인 ORM 을 사용하기 (0) 2021.09.24 django-filters 를 사용하여 복잡한 환경에서 OrderingFilter 사용하기 (0) 2021.09.24