상세 컨텐츠

본문 제목

[주피터노트북 커널] jupyter lab/notebook kernel

카테고리 없음

by 리치윈드 - windFlex 2022. 9. 19. 23:06

본문

반응형

지난번 포스팅에서는 conda를 이용하여 가상환경을 생성/확인/삭제 등에 대하여 알아 보았다. 

conda 가상환경에 대한 글은 아래 글을 참조 바란다. 

 

Jupyter lab/ jupyterNotebook Kernel 목록에 가상환경이 표기되지 않는다.

그런데, conda에서 가상환경을 생성하였다고 하더라도, Jupyter Lab 또는 Jupyter Notebook에서는 신규 생성한 가상환경으로 시작할 수가 없다. 물론, 가상환경으로 변경(conda activate) 후에 jupyter Lab 서비스 구동 자체 다시 시작하면 해당 가상환경으로 Jupyter를 사용할 수 있기는 하다. 그러나, 매번 Jupyter 서비스를 다시 재구동 할수는 없지 않겠는가?

 

conda (Anaconda)와 Jupyter가 동일 제품이라면 자동으로 연동 되겠지만, 서로 다른 제품/솔루션이므로 아쉽게도 서로 자동 연동이 되지 않는다. 다행 스럽게도 Jupyter Lab/Notebook에서는 이렇게 생성한 가상환경을 Kernel로 등록할 수 있도록 하는 기능이 마련되어 있다. 

 

 

Jupyter Kernel 등록

 

 

[ ipykernel 방법 ]

$ pip install ipykernel
$ python -m ipykernel install --user --name <가상환경 이름> --display-name <표기할 커널 이름>

더보기

 

다음과 같이 `ipython kernel`을 사용하는 방법들도 있다. 그러나, 이 경우에는 가상환경과 제대로 매핑되지 않는 경우가 많다. 안정적인 ipykernel을 사용하도록 하자. 

jupyter kernelspec 

ipython kernel install --user --name <가상환경 이름> --display-name <표시할 커널이름>

 

 

 

Jupyter Kernel 삭제

 

$ jupyter kernelspec remove <삭제할 커널 이름>
ex) jupyter kernelspec remove ML3

 

 

 

 

 

내부 로직 (상세)

 

Jupyter 내부로직을 한번 살펴 보면 (소스까지 보지는 않았지만),

`<home dir>/.local/share/`로 이동해 보면, Jupyter 디렉토리가 있다. 

하위 폴더에는 우리가 궁금해하는 "kernels" 디렉토리가 있으며, 다시 그 하위 디렉토리가 바로 우리가 등록하고자 하는 jupyter kernel의 이름들 이다. 

 

kernel이름의 디렉토리에는 "kernel.json"이라는 설정 파일이 있는데, 여기서 중요한 부분은 어떤 가상환경을 사용하고 있는지를 지정하고 있다. 이렇게 우리가 생성한 가상환경과, Jupyter가 그 가상환경을 사용하게 되는지 내부 로직을 짐작해 볼 수 있다. 

이런 부분을 알게 되었다면, 우리는 수동으로 Jupyter Kernel을 등록해 볼 수 있을 것이다.  결국은 jupyter kernel이 이해할 수 있는 파일/디렉토리 구조를 생성하고, kernel.json을 형태와 설정 정보에 맞게 파일쓰기를 해주는 과정이라고 볼 수 있다. 

굳이 수동 등록하지는 않을 것이다. (우리의 시간은 소중하니까.)

ipykernel과 kernelspec 들이 어떤 역할을 해 주는지만 파악하고 넘어가도록 하자. 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

댓글 영역