052. Raspberry Pi 라즈베리 파이 - 쥬피터 노트북 커널 추가하기 jupyter notebook add kernel
jupyter notebook에 python 버전별로 바꿔가며 사용할 일이 생겼는데
찾아보니 kernel 이라 부르고 손쉽게 추가가 가능하다
물론 buster 에서 말이다 release 10 이하라면 jupyter 설치부터 난관이니 추천하지 않는다
pi@rasp-dev:~ $ jupyter kernelspec list Available kernels: python2 /home/pi/.local/lib/python2.7/site-packages/ipykernel/resources python3 /usr/local/share/jupyter/kernels/python3 |
jupyter notebook 을 설치하고 커널 리스트를 보면 2개가 보이는데
jupyter notebook에 기본 python3 만 보인다
python2 도 설치되 있으니 추가해 보기로 했다
거기에 가상화 해둔 python2 & python3 도 말이다
결과화면
별차이 없지만 가상화와 아닌게 구분되있다
커널추가
ipykernel을 설치하고 ipykernel install 을 해주면 되는듯 하다
python -m pip install ipykernel
python -m ipykernel install --user
ipykernel 설치확인
ipykernel 이 설치되있는지는
pip list | grep ipykernel 로 확인 가능하다
커널 확인
jupyter kernelspec list
python 버전별 가상화
가상화는 virtualenv 가 설치되 있어야 된다
다른 가상화 툴은 안써봐서 패스
sudo pip3 install -U pip
sudo pip3 install -U virtualenv
python2
virtualenv --system-site-packages -p python2 /home/pi/venv/python2.7.16
pi@rasp-dev:~/venv $ virtualenv --system-site-packages -p python2 /home/pi/venv/python2.7.16 Running virtualenv with interpreter /usr/bin/python2 Already using interpreter /usr/bin/python2 New python executable in /home/pi/venv/python2.7.16/bin/python2 Also creating executable in /home/pi/venv/python2.7.16/bin/python Installing setuptools, pip, wheel... done. pi@rasp-dev:~/venv $ source /home/pi/venv/python2.7.16/bin/activate (python2.7.16) pi@rasp-dev:~/venv $ pip install --upgrade pip DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Requirement already up-to-date: pip in ./python2.7.16/lib/python2.7/site-packages (20.0.2) |
/home/pi/venv 경로에 python2 가상화를 진행했다
설치가 끝나고 바로 pip를 업데이트를 해줬다
근데 작업전에 시스템 pip를 모두 업데이트 해줘서 의미가 있나 싶기도..
가상환경에 설치된 python을 사용하려면
/home/pi/venv/python2.7/bin/python 을 입력해야 하는 번거로움이 있어
activate를 사용해서 환경설정을 변경해 줄 수 있다
그냥 활성화라고 보면 될듯
source /home/pi/venv/python2.7.16/bin/activate
괜히 python2.7.16 으로 만들었다가 타이핑이 더 늘어났다
.bashrc 에 alias로 등록해도 될듯하지만 패스
ipykernel 설치
pip 목록에 ipykernel 이 나오지 않으면 설치해야함
pi@rasp-dev:~ $ source /home/pi/python_env/python2.7.16/bin/activate (python2.7.16) pi@rasp-dev:~ $ pip list | grep ipykernel DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support ipykernel 4.10.1 (python2.7.16) pi@rasp-dev:~ $ python -m ipykernel install --user Installed kernelspec python2 in /home/pi/.local/share/jupyter/kernels/python2 (python2.7.16) pi@rasp-dev:~ $ deactivate pi@rasp-dev:~ $ jupyter kernelspec list Available kernels: python2 /home/pi/.local/share/jupyter/kernels/python2 python3 /usr/local/share/jupyter/kernels/python3 |
ipykernel 4.10.1 이 확인된다
python -m ipykernel install --user 명령으로 설치를 진행하면
/home/pi/.local/share/jupyter/kernels/ 하위에 설정파일이 추가된다
python3
별다를 것 없이 2를 3으로 바꿔주면된다
virtualenv --system-site-packages -p python3 /home/pi/venv/python3.7.3
pi@rasp-dev:~/venv $ virtualenv --system-site-packages -p python3 /home/pi/venv/python3.7.3 Already using interpreter /usr/bin/python3 Using base prefix '/usr' New python executable in /home/pi/venv/python3.7.3/bin/python3 Also creating executable in /home/pi/venv/python3.7.3/bin/python Installing setuptools, pip, wheel... done. pi@rasp-dev:~/venv $ source /home/pi/venv/python3.7.3/bin/activate (python3.7.3) pi@rasp-dev:~/venv $ pip install --upgrade pip Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Requirement already up-to-date: pip in ./python3.7.3/lib/python3.7/site-packages (20.0.2) |
설치가 끝나면 activate 를 활성화 하고 pip 업데이트 진행
ipykernel 설치
pip 목록에 ipykernel 이 나오지 않으면 설치해야함
pi@rasp-dev:~ $ source /home/pi/venv/python3.7.3/bin/activate (python3.7.3) pi@rasp-dev:~ $ pip list | grep ipykernel ipykernel 5.1.3 (python3.7.3) pi@rasp-dev:~ $ python -m ipykernel install --user Installed kernelspec python3 in /home/pi/.local/share/jupyter/kernels/python3 (python3.7.3) pi@rasp-dev:~ $ deactivate pi@rasp-dev:~ $ jupyter kernelspec list Available kernels: python2 /home/pi/.local/share/jupyter/kernels/python2 python3 /home/pi/.local/share/jupyter/kernels/python3 |
ipykernel 5.1.3 으로 확인됨
바로 python -m ipykernel install --user 으로 설치를 진행해주자
kernel 추가한건 좋은데 같은 버전끼리 있으면
마지막에 추가된 것만 반영되는 느낌
jupyter kernelspec list
가상화 추가 전
pi@rasp-dev:~ $ jupyter kernelspec list Available kernels: python2 /home/pi/.local/share/jupyter/kernels/python2 python3 /usr/local/share/jupyter/kernels/python3 |
가상화 추가 후
pi@rasp-dev:~ $ jupyter kernelspec list Available kernels: python2 /home/pi/.local/share/jupyter/kernels/python2 python3 /home/pi/.local/share/jupyter/kernels/python3 |
python3 경로가 달라진게 확인된다
이 상태로는 화면에서 2개의 커널만 확인된다
시스템 python3 가 목록에서 사라짐
쓰는데는 차이가 없지만
차이를 알고 싶다면 가상화에만
pip로 tensorflow 같은거 설치해보고 import 해보면 된다
커널설정 디렉토리 수정
시스템 & 가상화 전부 나오게 하는게 목표였으니 설정을 좀 수정해야한다
pi@rasp-dev:~ $ jupyter kernelspec list Available kernels: python2 /home/pi/.local/share/jupyter/kernels/python2 python3 /home/pi/.local/share/jupyter/kernels/python3 pi@rasp-dev:~ $ cd .local/share/jupyter/kernels/ pi@rasp-dev:~/.local/share/jupyter/kernels $ ls -al total 16 drwxr-xr-x 4 pi pi 4096 Jan 28 01:08 . drwxr-xr-x 4 pi pi 4096 Jan 28 00:20 .. drwxr-xr-x 2 pi pi 4096 Jan 28 01:05 python2 drwxr-sr-x 2 pi pi 4096 Jan 28 01:08 python3 pi@rasp-dev:~/.local/share/jupyter/kernels $ mv python2 env_python2 pi@rasp-dev:~/.local/share/jupyter/kernels $ mv python3 env_python3 pi@rasp-dev:~/.local/share/jupyter/kernels $ jupyter kernelspec list Available kernels: python2 /home/pi/.local/lib/python2.7/site-packages/ipykernel/resources env_python2 /home/pi/.local/share/jupyter/kernels/env_python2 env_python3 /home/pi/.local/share/jupyter/kernels/env_python3 python3 /usr/local/share/jupyter/kernels/python3 |
별거없고 설정된 커널디렉토리 명을 변경해주면 된다
가상화 python이니 앞에 env 를 붙여줬다
근데 커널이 4개로 확인되지만
jupyter notebook을 새로고침하면
python2 하나가 모자라다
시스템 python2는 목록에 없고
python3는 /usr 디렉토리 하위에 있어
수정권한을 받아야하니 각각 한번씩 더 해줬다
pi@rasp-dev:~ $ python -V Python 2.7.16 pi@rasp-dev:~ $ python -m ipykernel install --user Installed kernelspec python2 in /home/pi/.local/share/jupyter/kernels/python2 pi@rasp-dev:~ $ jupyter kernelspec list Available kernels: env_python2 /home/pi/.local/share/jupyter/kernels/env_python2 env_python3 /home/pi/.local/share/jupyter/kernels/env_python3 python2 /home/pi/.local/share/jupyter/kernels/python2 python3 /usr/local/share/jupyter/kernels/python3 pi@rasp-dev:~ $ python3 -m ipykernel install --user Installed kernelspec python3 in /home/pi/.local/share/jupyter/kernels/python3 pi@rasp-dev:~ $ jupyter kernelspec list Available kernels: env_python2 /home/pi/.local/share/jupyter/kernels/env_python2 env_python3 /home/pi/.local/share/jupyter/kernels/env_python3 python2 /home/pi/.local/share/jupyter/kernels/python2 python3 /home/pi/.local/share/jupyter/kernels/python3 |
시스템 python에도 ipykernel 을 설치해주자
같은 이름으로 2개씩 생겨났다
이 상태로는 jupyter notebook에서 구분이 안되니
화면이름(display name)도 변경해 줘야한다
최종 커널 리스트
pi@rasp-dev:~ $ jupyter kernelspec list Available kernels: env_python2.7.16 /home/pi/.local/share/jupyter/kernels/env_python2.7.16 env_python3.7.3 /home/pi/.local/share/jupyter/kernels/env_python3.7.3 python2 /home/pi/.local/share/jupyter/kernels/python2 python3 /home/pi/.local/share/jupyter/kernels/python3 |
sudo 권한 없이도 수정가능해 졌다
마땅히 쓸일은 없지만
화면이름 변경
pi@rasp-dev:~ $ vim /home/pi/.local/share/jupyter/kernels/python3/kernel.json { "argv": [ "python", "-m", "ipykernel_launcher", "-f", "{connection_file}" ], "display_name": "Python 3", "language": "python" } ~ <ter/kernels/python3/kernel.json" [noeol] 11L, 143C 1,1 All |
경로를 따라가보면 kernel.json 파일이 보이는데
display_name 을 변경해주고
jupyter notebook을 새로고침하면 변경된게 확인된다
참고
https://stackoverflow.com/questions/28831854/how-do-i-add-python3-kernel-to-jupyter-ipython