본문 바로가기
SW 개발/Data 분석 (RDB, NoSQL, Dataframe)

우분투 20.04에서 Jupyter Notebook 사용법: Web browser에서 Python 개발 환경 구축

by Kibua20 2021. 5. 16.

Jupypter Notebook은 https://jupyter.org/에서 개발한 Web 기반의  interface로 Browser상에서 Python 코드를 한 줄씩 실행하여 출력 결과를 확인할 수 있는 개발환경을 제공하는 오픈 소스의 개발 툴입니다. 

 

Local PC에서 Python 개발뿐 아니라, 브라우저 기반의 Interface를 사용하는 특성 때문에 때문에 AWS과 Goolge Cloud에서 Jupyter Notebook 형태로 Python code를 샘플 코드를 배포하기도 합니다.  또한 원격 서버에 Jupyter Notebook을 설치하고 Browser에서 원격으로 Python 코드를 개발할 수 있습니다. 예를 들어 AWS EC2에서 Jupyter를 설치하여 원격 소스 작업을 할 수 있습니다.

 

Jupyter Notebook는 Linux (Ubuntu), Mac, Windows  OS를 모두 지원하기 때문에 OS에 상관없이 동일한 Interface를 사용할 수 있습니다. Jupyter에 대한 설명은 아래 위키 백과를 참고하세요. 

출처: 위키백과 (링크)

프로젝트 주피터(영어: Project Jupyter, Listeni/ˈdʒuːpɪtər/)는 "오픈 소스 소프트웨어, 개방형 표준, 그리고 여러 개의 프로그래밍 언어에 걸쳐 인터랙티브 컴퓨팅을 위한 서비스 개발"을 위해 설립된 비영리 단체이다. 2014년에 페르난도 페레즈에 의해 IPython으로부터 파생된 프로젝트 주피터는 여러 개의 언어를 통한 실행 환경을 지원한다. 프로젝트 주피터의 이름은 주피터가 지원하는 세 개의 핵심 언어인 Julia, Python 그리고 R에서 유래했으며, 목성의 위성의 발견이 기록된 갈릴레오 갈릴레이의 공책에 대한 존경의 의미도 갖는다. 프로젝트 주피터는 인터랙티브 컴퓨팅 제품인 주피터 노트북, 주피터허브, 그리고 주피터 노트북의 차세대 버전인 주피터랩을 개발하고 지원해왔다.

 

우분투 20.04에서 Jupyter Notebook 설치 

설치하고자 하는 PC에 Python과 pip는 사전에 설치가 되어 있어야 합니다.  $ sudo apt install jupyter로도 설치가 가능하지만 pip 보다는 낮은 버전(v 4.6.3)을 설치하기 때문에 pip로 설치하는 것을 추천드립니다. 

 

# Python 설치 pip 설치되어 있어야 함.   Python 3.8 버전을 사용하기 때문에 pip3를 사용합니다. 

$ pip3 install jupyter

pip로 jupyter 설치

 

Jupyter가 정상적으로 설치되어 있는지 확인하기 위해서  $ jupyter --version과 --help 명령어를 확인합니다.

$ jupyter --version

jupyter 버전 확인

 

$ jupyter --help

jupyter 명령어 확인

 

우분투 20.04에서 Jupyter Notebook 실행 

Jupyter Notebook 실행은 $  jupyter notebook 명령어를 사용합니다.  Jupyter Notebook에서 binding 하는 IP 주소는 Localhost(127.0.0.1)와 8888 Port로 기본 값이 설정되어 있습니다.  Jupyter Notebook 실행 시 출력되는 token 값을 활용해서 실행 시 인증 값으로 사용할 수 있습니다. 

 

$  jupyter notebook

Jupyter Notebook실행

 

Chrome Browser를 http://localhost:8888 또는 http://127.0.0.1:8888에 연결하고 Jupyter Notebook을 화면을 확인할 수 있고, Local PC나 Web 상의 Jupyter Notebook파일을 열어 Python code를 실행할 수 있습니다. Python 코드는 각 행별로 Ctrl+Enter 키로 실행할 수 있습니다.  Python  코드를 실행하면 [ * ] 는 "실행 중"을 의미하고 실행 결과가 끝나면 [ 2 ] 와 같이 실행 순서의 숫자를 표시합니다. 

Jupyter notebook 실행

 

Jupyter 서버 만들기: 원격 서버에 Jupyter Notebook 설치와 실행

원격 서버에 Jupyter notebook를 설치하고 실행하기 위해서는 아래와 같은 단계가 필요합니다. 

  1. 원격 서버에 Jupyter notebook을 설치합니다.  앞에서 설명한 pip install jupyter 명령어로 Local PC와 동일하게 설치합니다. 
  2. Jupyter Notebook 설정 파일(jupyter_notebook_config.py)을 만들고, Jupyter Notebook에서 Listen 하는 IP 주소와 Port를 지정합니다. 
  3. 원격 서버에서 Jupyter Notebook을 실행하고,  실행 결과 콘솔에서 Token 값을 확인합니다. 
  4. 원격 서버의 방화벽이 설정되어 있는 경우 Jupyter Notebook의 Port를 수신 허용합니다.
  5. 로컬 PC의 브라우저에서  원격 서버의 IP주소와 포트로 접속하면 Jupyter Notebook이 실행됩니다.

Jupyter Notebook configuration 파일(jupyter_notebook_config.py) 생성합니다.

$ jupyter notebook --generate-config

Jupyter Notebook configuration 파일 생성

 

jupyter_notebook_config.py 파일을 vi로 열어 c.NotebookApp.ip주소와, port (필요시), 실행 폴더를 지정합니다. IP 주소는 원격 서버의 Public IP가 아니고, Subnet에서 할당받은 IP 주소로 작성해야 합니다. 

원격 서버에서 jupyter notebook을 실행합니다.  실행 시 Binding 하는 IP 주소, 포트, Token을 출력합니다. 

 

$  jupyter notebook

jupyter notebook을 실행

 

로컬 PC에서 Chrome Brower로 원격 서버의 Public IP:PORT로 접속하면 아래와 같이 Token 입력을 요청하는 Notebook 실행화면을 확인할 수 있니다. Token은 Notebook실행 시 출력한 값을 사용하면 됩니다. Token 인증 대신 Password로 설정 파일에서 인증 방법을 변경할 수 있습니다.  

 

원격 서버의 Jupyter Notebook을 실행하면 Python code는 서버에서 실행되고, 실행 결과만 Browser로 전달됩니다.

원격 서버에 설치된 Jupyter notebook

 

모바일에서 원격 서버의 Jupyter Notebook을 통해서 Python을 사용할 수 있습니다. 

모바일에서 원격 서버의 Jupyter Notebook을 통해서 Python실행

 

Cygwin에서 Jupyter Notebook 설치

Windows Cygwin에서도 Jupyter notebook 설치하는 방법은 Python과 pip를 사용해서 리눅스와 동일하게 설치할 수 있습니다.   Cygwin 터미널에서 pip install jupyter를 실행합니다.  

 

$ pip install jupyter

 

 

관련 글:

[모바일 SW 개발/Android] - 안드로이드 스마트 폰 화면 미러링 방법: scrcpy 사용법

[모바일 SW 개발/Python] - Python 2.x에서 3.x으로 코드 자동 변환

[모바일 SW 개발/Python] - Python으로 압축 파일 다루기: Zipfile 과 shutil.make_archive()

[모바일 SW 개발/Android] - Python BeautifulSoup으로 만든 Apk download 자동화 (Sample code)

[모바일 SW 개발/Python] - Python: 날짜와 시간 처리 함수(현재 날짜, 어제 날짜, UTC 시간)

[모바일 SW 개발/Android] - Android에서 Python 실행 (SL4A와 Termux 활용)

[모바일 SW 개발/Python] - Python: xmltodict를 활용하여 XML를 JSON으로 변환하는 방법

[모바일 SW 개발/Android] - Android 에서 리눅스 App 실행: Linux Terminal Emulator (Termux) 활용

[개발환경/Web Server] - Python: Web Framework Flask 사용하기

[모바일 SW 개발/Python] - Python 소스 숨기는 방법: pyc 활용 (Bytecode로 컴파일)

[개발환경/윈도우와 WSL] - 윈도우용 MobaXterm - SSH 및 X-Server 지원

 




댓글