본문 바로가기

Linux/Linux Basics

리눅스에서 파이썬 환경 구축하기 (Docker를 이용해 테스트)

문제상황

리눅스를 쓰면서

sudo apt-get install

sudo apt install

curl url

wget url

make filename

등등 다양한 방법을 통해 package를 install 해왔다.

 

하지만, 무분별하게 닥치는 대로 install 해나가다보니 python 과 pip 버전이 꼬이게 되었고, 어떤 pip가 어떤 version의 python을 가리키게 되는지, 

virtual env가 설정이 되어있느지 등등 아무것도 모른 채 그냥 사용하다가 오류가 나게되었다.

Docker image를 통해 container을 run!

그래서 요즘 배운 기술인 Docker를 이용해서 독립적인 가상환경을 구축하여 한 번 python 과 pip에 대해 디렉토리가 어떻게 설정되어있는지, 설치는 어떻게 해야하는지 정리해보았다.

 

여러가지 방법 존재

virtual env 관련 패키지 설치 <- 귀찮음

user directory내에 user별로 독립되게 설치 <- user디렉토리를 나가면 달라짐;;;

conda 이용 <- anaconda도 쓰다보면 편한데 안쓰다보면 안 쓰는 게 더 편해보임

get-pip.py 이용 <- 이 방법 채택하겠습니다.

apt install 이용 <- pip가 너무 구버전이 깔리고, 잘 꼬이더라.


우선 우분투를 기준으로 최근에 나오는 우분투들은 다들  python2, 3이 설치되어있다.

하지만 나는 Docker의 official image인 ubuntu image를 이용해 가상환경을 구축했더니 python2,3이 install 되어있지 않았었기 때문에, python3을 우선 깔아주겠다.

( Docker에 대해 모르시는 분들은 그냥 이부분은 넘기셔도 됩니다. 그냥 제 컴퓨터에서 가상환경을 돌렸다는 말이에요 )

https://hub.docker.com/_/ubuntu )


만약 본인의 PC가 별 패키지 설치 과정을 거치지 않은 순수상태라면

apt install -y python python3 python3-distutils curl &&
    curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py &&
    python3 get-pip.py &&
    python2 get-pip.py &&
    rm get-pip.py
    
cd /usr/bin
rm python
ln -s python3 python

python --version &&
    python2 --version &&
    pip --version &&
    pip2 --version

 

제가 작성한 위의 스크립트를 통째로 갖다 붙이셔도 됩니다.

 

모든 작업은 su root를 통한 root user 상태로 진행하여 sudo 커맨드가 없다.

 

위와 같이 python, pip 관련된 명령어를 쳤는데 ~~ command not found 가 나온다면 설치가 되어있지 않은 것이고,

무엇이라도 작동한다면 설치는 되어있되, 일부를 삭제한 경우일 수 있다.

 

요즘은 pytho3.x를 더 많이 쓰니까 pytho3.x 부터 설명

Python3.x

apt install python3 python3-distutils -y

 

일단 저 2개의 패키지를 설치해준다.

python3 : pytho3 자체

python3-distutils : pip를 다운받기 위한 패키지 ( 좀 이상함. 그냥 pip를 설치하게 해주지, ubuntu apt제공 pip는 너무 구버전이라... )

 

이후 python3 --version으로 버전을 확인가능.

 

https://pip.pypa.io/en/stable/installing/ 여기 나온대로

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

로 get-pip.py 를 다운 받고

 

python3 get-pip.py

로 pip를 설치할 수 있다.

 



For Python2.x

apt install python2 -y

python2 get-pip.py

 

마찬가지로 위에서 받은 get-pip.py로 설치가 pip가 설치가능하다

단! 이때에는 python2나 python으로 실행해줘야한다. ( pythonXXX --version시 2.x가 나오는 command로!)

(distutils 어쩌고 오류날 경우  apt install python3-distutils -y 가 제대로 안 된 것임.

다시 apt install pytho3-distutils -y 를 다시 해보세요)

 

root 유저로 무사히 설치했을 시 각 버전은 이렇게 나오면 정상이다.

문제는 python이라는 command가 pytho2.x를 가리키는데 python3.x를 가리키게해주고싶다.

요즘은 pytho3.x를 더 많이 쓰니까 

python 이란 명령어로 실행했을 때 python3이 실행되게만 바꿔주자.

pip, pip3, python, python3 은 python3.x와 관련되게

pip2, python2 는 python2.x와 관련되게.

python 이라는 command 의 위치인 /usr/bin으로 가자

 

ln -s 원본 바로가기파일

의 형식으로 심볼릭링크를 생성할 수 있다.

 

rm python

ln -s python3 python

원래의 실행파일 python을 삭제하고

python3을 이용한 python이라는 이름의 심볼릭 링크 (바로가기)를 생성하겠다.

이후 python --version을 입력하면 원했던 바대로 3.x의 파이썬이 실행됨을 알 수 있다!!



참고. 사용한 Dokcer Image의 Dokcerfile

FROM ubuntu:18.04

RUN echo root:1234  | chpasswd
RUN apt-get update

ENV HOME "/home/tutee"
ENV USER tutee
# # change a user
RUN useradd --create-home --shell /bin/bash $USER
RUN echo $USER:1234  | chpasswd

USER tutee

WORKDIR $HOME/python_dev
COPY . $HOME/python_dev

RUN echo $HOME