I. Jupyter Notebook
Jupyter Notebook은 웹 브라우저 기반으로 돌아가는 대화 형식의 Python 관련 프로그램들 중 하나입니다. Python도 Script 형식이긴 하지만 프로그램을 실행하면, 입력이 나올 때까지는 계속 쉬지 않고 돌아가서 뭐가 문제인지 모르는 경우도 생기고, 저와 같은 초보자들의 경우에는 단계별로 코딩을 해야하는데 한 번에 프로그램을 돌아가게하면 이해가 안되는 경우가 많습니다. 하지만, Jupyter Notebook의 경우에는 코드를 조각 조각내서 돌리면서 중간에 어떤 식으로 프로그램이 돌아가는지를 확인할 수 있고, 중간에 잘못 되더라도 원하는 블록부터 다시 프로그램을 돌림으로써 쉽게 코딩도 배우고 오류점도 찾아 낼 수 있습니다. (그냥 구글드라이브의 코랩 쓰세요) 데이터 과학에서 자주 쓰이게 되는데, 그림 출력 부분도 좋고, 수정점을 찾아서 고칠 수가 있으며, R에 대해서도 지원되니 많이 쓰이는 이유를 알 것 같습니다.
II. 1차적인 WSL에서의 설치
Jupyter notebook의 경우에는 대중적으로 많이 쓰이고 있기 때문에 그냥 Linux나 Window에서 설치할 경우에는 쉽게 설치하여 바로 사용할 수가 있습니다.
pip install jupyter notebook
혹은
python3 -m pip install jupyter notebook
으로 설치가 가능합니다.
이후에는 실행은
python3 -m jupyter notebook
이라는 형식으로 돌리게 되는데요. Window와 Linux 사이 어딘가에 있는 WSL의 경우에도 이렇게 하면 설치가 됩니다. 다만 Linux Terminal에서 돌리게 될 경우에는 수많은 오류를 뿜어내며 검은색 화면만 보이게 됩니다. 이 부분은 너무 빨리 지나가게 되어서 Visual Studio Code를 활용하여, 오류를 캡쳐하게 되었습니다.
III. 무엇이 문제인가?
실제로 명령어를 통하여 jupyter notebook의 경로나 버전을 확인하게 되면은 문제없이 설치가 잘 되었다고 나옵니다. 그럼에도 불구하고 실행이 안되는 점이 있는데, 그 이유는 바로 저번 시간 VS code를 WSL에서 바로 실행하면 안되는 이유와 같은 GUI 문제입니다. WSL의 경우에는 GUI가 지원되지 않고 윈도우에 있는 GUI 환경을 활용하여 간접적으로 그 정보를 받아와서 보는 형식입니다. 그래서 VS code를 WSL에 바로 설치를 해서 프로그램을 실행하면 GUI 문제 때문에 실행이 안되는 것이죠. 하지만 Jupyter notebook을 설치했을 시에는 기본적인 옵션을 모두 달고 나오기 때문에 우리가 일반적으로 Linux나 Window에서 하던 것 처럼 바로 Jupyter notebook이 기본 Browser를 통해 실행이 되려 하고, 이 때 실행된 Browser가 문제를 일으키면서 수많은 오류를 뿜뿜하게 됩니다.
WSL2에서는 GUI가 지원된다는 이야기가 있습니다. 따라서 WSL를 우리가 생각하는 운영체제처럼 돌릴 수 있을 것 같은데... 5월 말에 나온다고 합니다. (4월에서 연기)
IV. 어떻게 해결하는가?
python3 -m jupyter notebook --no-browser
이렇게 터미널에 명령어를 넣게 되면, 바로 실행이 되지않고, 이 jupyter notebook이 실행되고 있는 서버의 주소가 열리게 됩니다. 서버의 주소를 그대로 크롬이나 파이어폭스와 같은 브라우저 주소창에 넣으면 완성이 됩니다.
하지만 이러한 --no-browser를 jupyter notebook을 실행할 때마다 타이핑하기 귀찮은 부분도 있습니다. 때문에 WSL에서 바로 jupyter notebook이 열리지 않도록 설정해놓는 방법도 있습니다.
jupyter notebook --generate-config
라고 입력을 하면 wsl 기준 최상단 경로에 /.jupyter/jupyter_notebook_config.py라는 파일이 생성이 됩니다.
이것을 vim이나 nano 에디터로 열어주도록 하겠습니다.
vim /.jupyter/jupyter_notebook_config.py
그러면 수많은 #으로 이루어진 참조 상태로 처리된 코드들이 나오게 되는데 저희는 브라우저 부분을 찾아보도록하겠습니다.
vim의 경우에는 /를 누르고 browser를 입력하시면 됩니다.
많은 부분이 뜰건데 저희는
c.NotebookApp.open_browser라는 단어를 찾을 것입니다.
원래는 #c.NotebookApp.open_browser=True 라는 부분으로만 되어있지만 #을 제거해준다음, True를 False로 바꾸게 되면 다음부터 jupyter notebook 실행시에 자동으로 Browser에서 연결이 되지 않습니다.
V. 추가적으로
가끔 Jupyter notebook을 실행시켜도 무한로딩이 브라우저창에서 뜰뿐 실행이 요원한 경우가 많이 보입니다. 이 경우에는 별 생각없이 jupyter notebook을 껐다가 다시 켜는 경우에 할당되는 서버의 주소가 겹쳐져 버려서 연결이 안되는 경우가 많습니다.
보통 로컬 서버를 8888 기준으로 하니 8889 8890 등으로 다음과 같이 바꿔서 실행을 해주시면 됩니다.
(서버를 끄는 방법도 있지만, 이게 조금 더 빨라서 애용하고 있는 중입니다.)
python3 -m jupyter notebook --port=8889
그러면 새로운 서버에 jupyter notebook이 실행이 되면서 다시 웹 브라우저를 통해서 접속할 수가 있습니다.
'개발 환경 설정 > WSL 환경 설정' 카테고리의 다른 글
oh my zsh Insecure completion-dependent directories detected: 문제 해결 (0) | 2020.07.25 |
---|---|
WSL2 변환 및 세팅 (0) | 2020.07.21 |