상세 컨텐츠

본문 제목

052. Raspberry Pi 라즈베리 파이 - 쥬피터 노트북 커널 추가하기 jupyter notebook add kernel

raspberrypi/raspbian

by ZelKun 2020. 2. 1. 02:25

본문

반응형

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

반응형

관련글 더보기

댓글 영역