GCP 노트북 인스턴스에서 virtualenv 사용하기

구글 클라우드의 AI 플래폼에서 제공하는 노트북 인스턴스를 사용하면 주피터 노트북 기반의 연구나 실험을 편리하게 수행할 수 있습니다. 이따금 한 인스턴스에서 여러 개의 virtualenv 운영하고 싶을 때가 있습니다. 이 글에서 virtualenv 환경을 만들어 주피터 노트북과 연결하는 간단한 방법을 안내하겠습니다.

노트북 인스턴스를 만든 다음 OPEN JUPYTERLAB을 클릭하면 다음과 같은 화면이 새창으로 열립니다.

default_jupyterhub.png

노트북 인스턴스는 기본적으로 파이썬 2와 파이썬 3의 노트북 환경을 제공합니다. 시스템 전역에 설치된 파이썬을 그대로 두고 가상 환경을 만들어 연결해 보겠습니다.

먼저 인스턴스에 접속해야 합니다. jupyterlab의 Terminal이나 cloud shell을 사용해 인스턴스에 접속할 수 있습니다. 이 jupyterlab은 jupyter 계정에 연결되어 있습니다. cloud shell에서 인스턴스의 jupyter 계정으로 접속하세요. 기본 계정으로 접속했다면 jupyter 계정으로 전환하세요.

가상 환경을 만들 프로젝트 디렉토리로 이동한 후 파이썬 3 기반의 가상 환경을 만들기 위해 다음과 같은 virtualenv 명령을 실행합니다.

$ virtualenv --python python3 env

이제 다음 명령으로 가상 환경을 활성화합니다. 환경을 활성화한 후에는 시스템에 독립적으로 원하는 파이썬 패키지를 마음껏 설치할 수 있습니다.

$ source env/bin/activate

이제 만든 환경을 주피터에 연결할 차례입니다. 시스템에서 기본적으로 제공하는 주피터 커널은 다음과 같습니다.

/usr/local/share/jupyter/kernels/python2/kernel.json
/usr/local/share/jupyter/kernels/python3/kernel.json

앞에서 만든 가상 환경을 커널에 추가하는 방법은 간단합니다. 먼저 루트로 계정을 바꾼 후 kernels 디렉토리로 이동하여 원하는 이름의 디렉토리를 하나 만듭니다.

# cd /usr/local/share/jupyter/kernels
# mkdir gdl

기존 커널의 kernel.json 파일 하나를 위에서 만든 디렉토리 아래로 복사합니다.

# cp python3/kernel.json ./gdl/

복사한 kernel.json 파일에서 display_name을 원하는 이름으로 바꾸어 줍니다. argv 키 아래 리스트의 첫 번째 항목을 앞에서 만든 가상 환경의 파이썬 실행 경로로 바꿉니다.

{
  "display_name": "gdl",
  "language": "python",
  "argv": [
    "/home/jupyter/your_project/env/bin/python3",
    "-m",
    "ipykernel_launcher",
    "-f",
    "{connection_file}"
  ]
}

kernel.json 파일을 저장한 다음 jupyterlab 창을 닫고 다시 OPEN JUPYTERLAB을 클릭하여 새 페이지를 엽니다. 이제 다음처럼 gdl 환경으로 실행할 수 있는 노트북과 콘솔 메뉴가 보일 것입니다.

add_new_env

노트북 인스턴스를 바꿔가며 작업하기 번거로운 경우 간단한 설정만으로 한 인스턴스 내에서 여러 개의 파이썬 가상 환경을 실험해 보세요! 🙂

GCP 노트북 인스턴스에서 virtualenv 사용하기”에 대한 1개의 생각

  1. 핑백: [텐서 플로우 블로그 (Tensor ≈ Blog)] GCP 노트북 인스턴스에서 virtualenv 사용하기 - DEVBLOG - 개발자 메타블로그

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중

This site uses Akismet to reduce spam. Learn how your comment data is processed.