2 분 소요

RaspberryPi 4B에서 Python 버전충돌없이 TensorFlow 설치하기

텐서플로우 2.5 이상은 python3.9부터 지원을 한다. 하지만 내가 갖고 있는 라즈베리파이에는 텐서플로우 2.4버전까지만 설치하기 쉽게 도와주는 whl파일이 있었다. 그런데 텐서플로우 2.4버전까지는 파이썬 3.7까지만 지원이 되었다. 그런데!! 파이썬은 보통 라즈비안 OS를 설치시 기본 설치되어서 나오기 때문에 OS버전을 제대로 먼저 확인을 하고 설치를 해야 한다.

파이썬 버전확인 명령어는 다음과 같다.

python --version

Python 3.9.2

(env) js@1:~$

몇가지 명령어를 더 알아보자

git checkout master

git checkout master명령어는 Git 저장소에서 master 브랜치로 전환하는 명령어다.

이 명령어를 실행하면 현재 작업중인 브랜치가 master 브랜치로 변경되는 기능이다.

git checkout 명령어는 다양한 용도로 사용되는데, 여기서는 브랜치를 변경하는 용도로 쓰이는데, 이때 각 브랜치를 독립적으로 코드를 저장하고 변경할 수있다는 측면에서 버전관리에 매우 효과적이라 볼 수 있다.

pip install -e .[pi]

위 명령어는 파이썬 패키지를 설치하는 명령어다. 여기서 -e가 어떻게 쓰이는지 궁금했는데, “editable”모드를 의미하는 것이었다. 현재 디렉토리의 소스 코드를 직접 참조하여 패키지를 설치하겠다는 것을 나타낸다. 즉, 개발중인 패키지를 수정하면 해당 변경사항이 바로 적용되도록 하는 것이다.

.[pi] 부분은 “추가의존성”을 설치하기 위한 옵션이라 볼 수 있다. 보통 패키지 개발 또는 사용에 필요한 추가적인 의존성이 있을때 사용된다. 여기서 [pi]는 여러 “추가 의존성” 중에서 pi라는 그룹을 의미한다 볼 수 있겠다.

예를 들어보자. 만약 해당 패키지가 일반사용자를 위한 패키지와 라즈베리파이 사용자를 위한 패키지로 나눠져 있다고 보자.

이때 pi라는 추가의존성에는 라즈베리파이에서만 필요한 패키지들이 포함된다고 볼 수 있곘다. 이를 함께 설치하고 싶다면 위에서와 같이 .[pi] 와 같은 형식으로 명시할 수 있겠다.

세성에서 제일 킹받는 일은 파이썬 버전 다운그레이드인 것 같다..

지금 나의 파이썬 버전은 3.9.2이다.

하지만 텐서프로우를 안정적으로 깔기위해서는 3.7을 깔라고 한다. 그래서 울며 겨자먹기로 다운그레이드를 하기로 했다.

pip install -r requirements.txt

지금 위에껄로 안되어서, 일단 새롭게 독립적인 가상환경을 구축하고,

python3 -m venv myenv
source myenv/bin/activate

pyenv를 사용하여 python을 설치하는 방식으로 다시 적용해보았다.

sudo apt update
sudo apt install build-essential libssl-dev zlib1g-dev libbz2-dev \
                 libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev \
                 libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python3-openssl git

이후 pyenv를 쓰기 위한 설정용 명령어를 처주고,

curl https://pyenv.run | bash

아래 명령어로 bash쉘을 설정해준다.

echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init --path)"' >> ~/.bashrc
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
source ~/.bashrc

이후 파이썬을 일반으로 설치하려면 이 명령어를,

pyenv install 3.7.9

파이썬을 전역으로 설치하고 싶다면 이 명령어를,

pyenv global 3.7.9

파이썬을 지역으로 설치하고 싶다면 이 명령어를 쳐준다.(나는 이거 했음)

pyenv local 3.7.9

참고로 설치는 다음과 같이 (env)라는 곳에 했다.

image-20240121212220540

머 대충은 맞춘것 같다. 근데 내가 아직 파이썬 가상환경에 대한 이해가 부족한 실정이라ㅜ 일단 이 부분을 이해하고 넘어가려고 한다.

전략을 수정하기로 했다. 원래는 PiRacer의 공식문서를 따라가려고 했는데, 부분적으로는 교수님의 메뉴얼을 따라가기로 했다. 쉽게 말해서 나만의 메뉴얼을 만드는 방식으로 새롭게 구축해보려고 한다.

뭐 이러면서 환경에 대한 이해도 하고 그러는거 아니겠는가?

0.가상환경 구축, 그리고 다시 빠져나오기

1.동키카 git으로 받기->dcwork로 받자(공식문서 아니여도 상관없을듯?

2.이거에 물려있는 서브모듈들 받고 업데이트 진행하라는데 파이썬 모듈이 아닌 깃 서브모듈을 받는거라 파이썬과의 충돌우려는 아에 생각할 필요없다.

3.msys2는 리눅스에서 설치할 필요 없어서 그냥 무시하자

4.이제 파이썬 가상환경에 필요한 파이썬 패키지 설치하기

근데 생각해보니 dcworks로 까는게 안된다. 권한이 없다. 그래서 권한을 주는 방식으로 깔건지, 아니면 정석대로 깔되, 파이썬 버전을 텐서플로우에 맞게 맞춰주는 방향으로 해야 할지 정해야 하는데, 나는 후자를 정했다. 아래 명령어를 따르자.

1. 파이썬 버전 3.9가 아닌 3.7로 맞추고 가상환경 구축하기

sudo apt update
sudo apt install build-essential libssl-dev zlib1g-dev libbz2-dev \
                 libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev \
                 libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python3-openssl git

curl https://pyenv.run | bash

echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init --path)"' >> ~/.bashrc
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
source ~/.bashrc

pyenv local 3.7.9

2. OpenCV를 위한 라이브러리 설치하기

sudo apt-get install libilmbase-dev libopenexr-dev libgstreamer1.0-dev libjasper-dev libwebp-dev 
sudo apt-get install libatlas-base-dev libavcodec-dev libavformat-dev libswscale-dev libqtgui4 libqt4-test

3. 동키카 코드 받아오기

mkdir projects
cd ~/projects
git clone https://github.com/waveshare/donkeycar
cd donkeycar
git checkout master

4.파이썬 주변모듈이랑 텐서플로우 받고 넘파이 업그레이드 하기

sudo pip install --upgrade pip
sudo pip install -e .[pi]
sudo pip install tensorflow==1.13.1
sudo pip install numpy --upgrade

(tensorflow)깔렸는지 확인하기!

python -c "import tensorflow"

위 작업의 전제로는 pyenv를 사용해야 한다고 했었다. 이거는 내일 정리하자!

댓글남기기