Jupyter notebook
I. Jupyter notebook?
Jupyter notebook은 Jupyter에서 제작한 웹기반 인터랙티브 플랫폼입니다. Jupyter에서 지원하는 3개의 핵심언어인 Julia, Python, R에서 따온 이름으로 알려져 있습니다. 웹기반이라 웹브라우저에서 쉽게 사용이 가능하며, 심지어 무료입니다. 사람들이 데이터 분석에 있어서 Jupyter notebook을 많이 사용하는 이유는 무엇보다 편리성입니다. 대화형 모드를 지원해, 코드를 입력할 때 마다 그 결과를 바로 확인할 수있습니다. 저도 회사에서 업무를 할 때 데이터 분석과 관련된 EDA나 시각화 등은 Jupyter notebook을 활용합니다. 그리고 확정된 모델을 주기적으로 서비스 해야 할 때는 scala나 python 코드로 변환해 airflow로 배치작업을 돌립니다.
II. How to install
설치 환경은 win11 입니다. 설치 방법은 여러가지가 있지만 앞선 글에서 minconda를 설치했으니 conda 명령어를 이용해보도록 하겠습니다. 설치가 완료되면 jupyter notebook이 새롭게 생성된 것을 확인할 수 있습니다. ( ) 안에 있는건 가상 환경 이름입니다.
conda install jupyter notebook

III. Jupyter Setting
Jupyter notebook을 실행하면 현재의 폴더 위치와 사용할 수 있는 가상 환경의 리스트를 볼 수 있습니다. 우선 각자가 원하는 폴더 위치가 첫 화면으로 나오게 설정을 해야 하고, 본인이 설정한 가상 환경도 선택할 수 있게 변경이 필요합니다.

1. 시작 폴더 위치
시작 폴더 위치를 변경해 봅시다. 주피터 노트북 설치 후 시작메뉴에서 주피터 노트북을 열면 홈화면에 시작 폴더가 보이는데, 기본 경로는 %USERPOFILE% 입니다. 이를 변경하기 위해서는 jupyter_notebook_config.py 파일을 찾아 설정을 변경 해야 합니다. window 사용자라면 C:\Users\user\.jupyter 경로로 가시면 대부분 바로 나올 겁니다. 만약 찾기가 어렵다면 prompt에서 아래와 같은 명령어를 입력합니다. 그럼 해당 파일이 생성되는 위치를 보여줍니다.
jupyter notebbok --generate-config

config 파일을 찾아 메모장으로 열어줍니다. 여기서 시작 위치 폴더를 변경해줍니다. 찾아야 하는 부분은 아래와 같습니다.
#을 지우고 원하는 시작 위치를 ' ' 안에 입력하시면 됩니다.
# c.NotebookApp.notebook_dir = ''
버전에따라 NotebookApp.notebook_dir이 없는 경우도 있습니다. 이 경우에는 c.ServerApp.root_dir을 찾아 수정 하시면 됩니다.
## The directory to use for notebooks and kernels.
# Default: ''
# c.ServerApp.root_dir = ''
마지막으로 jupyter notebook 실행 파일의 속성을 변경 해야 합니다. 실행파일 우클릭 > 기타 > 파일 위치 열기를 통해 해당 파일을 먼저 찾습니다. 그리고 속성을 눌러 아래 그림과 같은 화면을 우선 엽니다. 수정 해야 할 부분은 두가지 입니다.
- 대상(T) : 맨마지막 %USERPROFILE% 삭제
- 시작위치 : %USERPROFILE% 삭제
2. 가상 환경 연결하기
앞서 말했듯이 Anaconda에서는 가상 환경을 생성해 프로젝트 마다 필요한 버전의 라이브러리를 설치합니다. Jupyter notebook에서도 본인이 필요로 하는 환경을 선택해 그 환경의 라이브러리를 사용하거나 추가할 수 있어야 합니다. 이와 관련된 명령어는 다음과 같습니다.
python -m ipykernel install --user --name [env_name]
IV. Result
다시 Jupter notebook을 실행해보면 처음 설치했던 화면과 다른게 아래와 같은 화면을 볼 수 있습니다. 시작 위치는 제가 지정한 폴더로 변경되었고, 기존에 존재하지 않던 test2 라는 현재 저희가 테스트에 사용하고 있는 가상환경의 이름이 새롭게 생성된 것을 볼 수 있습니다.
