문제상황
리눅스를 쓰면서
sudo apt-get install
sudo apt install
curl url
wget url
make filename
등등 다양한 방법을 통해 package를 install 해왔다.
하지만, 무분별하게 닥치는 대로 install 해나가다보니 python 과 pip 버전이 꼬이게 되었고, 어떤 pip가 어떤 version의 python을 가리키게 되는지,
virtual env가 설정이 되어있느지 등등 아무것도 모른 채 그냥 사용하다가 오류가 나게되었다.
그래서 요즘 배운 기술인 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
'Linux > Linux Basics' 카테고리의 다른 글
리눅스에서 파이썬 삭제 후 GUI 이용 불가한 오류 (0) | 2019.05.30 |
---|