개요

파이썬 쥬피터를 이용한 텐서플로우 개발환경 구성하기 글을 통해 텐서플로우랑 주피터를 연동하는 방법을 정리했었다. 여기서 이어 회사에서 주피터를 쓰다보니 개인별로 환경을 분리해주어 pip 패키지 의존성 충돌을 제거하고 모듈 사용의 자유도를 높이는 것이 필요하다고 판단하였다. 따라서 파이썬에 이미 있는 VirtualEnv개념을 Jupyter에도 적용 가능할 것 같아 찾아본 후 정리해둔다.

핵심개념

파이썬의 VirtualEnv가 주피터에서는 kernel이라는 개념으로 실행된다고 이해하면 된다.

이글에서 하고자 하는 것

아래 그림과 같이 파이썬의 VirtualEnv를 활용하여 개발 사용자 혹은(workspace)를 구성하는 것이다.
아래 그림에서는 Python3, R, lks21c의 3개의 커널이 존재한다고 생각하면 된다.

ipykernel 설치

jupyter가 실행되는 python의 pip에서는 ipykernel이 설치되어야 한다.

$ pip install ipykernel

Config용 커널 디렉토리 위치 찾기

jupyter바이너리에서 아래의 명령어를 날려보면 아래와 같이 나온다. 이중에서 필자는 jupyter 실행경로에 있는 /home/hadoop/anaconda3/envs/id/share/jupyter/kernels 경로에서 커널위치를 찾을 수 있었다.

$ jupyter --path

Kernel 추가

우선 커널에 사용할 디렉토리를 만든다.

$ mkdir /home/hadoop/anaconda3/envs/id/share/jupyter/kernels/lks21c
$ cd /home/hadoop/anaconda3/envs/id/share/jupyter/kernels/lks21c

이 경로에서 VirtualEnv의 실행경로를 kernel.json으로 추가한다.

{
 "argv": [ "virtualenv경로/bin/python", "-m", "ipykernel",
          "-f", "{connection_file}"],
 "display_name": "tensorflow",
 "language": "python"
}

검증 : jupyter에서 커널 확인해보기

아래와 같이 커널이 생성된 것을 확인 할 수 있다.