본 글에서는 Python 설치 방법 4가지와 함께, 여러 버전을 선택적으로 switching하는 방법에 대해 다루고 있습니다. python 설치할 때마다 다른 방법으로 설치되어서 혼란스러운 분들을 위해 작성해보았습니다.
각각의 특징입니다.
설치 타입 | 간편한 설치 | 가벼운 설치 | 설치환경 저장기능 | 그 외 단점 |
apt | O | O | 지원되는 python버전이 적음 | |
수동 다운로드 | O | 빌드 에러 발생 가능 | ||
conda | O | O | (회사에서) 라이센스 필요 | |
docker | O |
개인적인 상황에 따라 4가지 중 한가지를 선택해서 사용하면 됩니다. 저의 경우 집에서 취미로 코딩할 땐 conda를 사용하고, 회사에선 직접 다운로드 방식을 사용합니다. 한가지 방법으로 여러 python버전을 설치하는 것을 추천드립니다.
설치 확인 / 설치 타입 확인
$ python -V # python이 설치되어있는지 확인 + version 확인
$ which python # python이 어디에 설치되어 있는지 확인. 또는 which python3
두번째 명령어 결과를 통해, 어떤 방법으로 설치되어 있는지도 확인 가능합니다.
- /usr/bin/python인 경우, apt-get 방법
- /usr/local/bin/python인 경우, 수동 설치방법
- ~/anaconda3/bin/python인 경우, conda방법
어떤 방법으로 설치되어 있던, 추가적으로 python 설치는 가능합니다.
1. apt-get 방법
apt-get은 프로그램 패키지 관리 도구입니다. python도 제공되고 있습니다.
$ sudo apt update #패키지 업데이트
$ sudo apt list | grep python # 설치가능한 패키지 버전 확인
$ sudo apt install python3.11 # 패키지 설치
위 명령어로 간편하게 설치가 가능합니다. 여러버전을 설치 할 수 있습니다.
$ /usr/bin/python3.10 # python 실행
>>> exit() # python 종료
위 명령어를 통해 실행합니다. apt방법은 /usr/bin, 수동설치 방법은 /usr/local/bin 임을 유념하시길 바랍니다.
2. 수동 다운로드 방법
python.org/downloads에서 python버전을 선택 후, Gzipped source tarball로 다운 받습니다.
$ wget https://www.python.org/ftp/python/3.9.18/Python-3.9.18.tgz # 명령어로 다운로드
$ sudo tar xzf Python-3.9.18.tgz
$ cd Python-3.9.18
$ sudo ./configure --enable-optimizations # 에러가 발생한다면 gcc버전 체크
$ sudo make install
Gzipped source tarball을 브라우저에서 직접 다운받으면, wget을 안해도 됩니다. 여기서 gcc에러가 발생하면, apt를 통해 최신버전의 gcc을 설치하면 됩니다. CUDA를 사용해서 프로그래밍 하시는 분들은 multi-cuda 설치글에서 "gcc"로 검색해서 적합한 gcc 버전으로 설치하시길 바랍니다.
$ /usr/local/bin/python3.9 # python 실행
>>> exit() # python 종료
위 명령어를 통해 실행합니다. apt방법은 /usr/bin, 수동설치 방법은 /usr/local/bin 임을 유념하시길 바랍니다.
3. conda방법
https://www.anaconda.com/download 에 접속해서, skip registration하고 일단 사용하지 않는 python 버전일지라도 최신 버전으로 다운 받습니다.
$ wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh # 설치파일 다운로드
$ bash Anaconda3-2024.10-1-Linux-x86_64.sh # 설치파일 실행
설치파일을 실행하고 나면, 라이센스 약관 동의하고 설치 위치를 지정하면 됩니다. Enter를 눌러 기본 위치로 지정합니다.
You can undo this by running `conda init --reverse $SHELL`? [yes|no]
[no] >>>
터미널을 열 때, conda가 자동 활동성화되는지를 물어봅니다. yes를 입력하면 설정이 적용되고, no를 입력하거나 엔터를 누르면 기본값으로 지정됩니다. 저는 자동 활성화가 편해서, yes로 설정하고 있습니다(~/.bashrc파일에 conda initialize코드가 추가됩니다). 이렇게 하면 설치가 완료되고, 새로운 터미널을 열면 (base)라는 키워드가 붙으면서 conda가 활성화 된 것을 확인 할 수 있습니다. 아래 명령어로 conda 쉘 터미널을 실행하고 종료 할 수 있습니다.
do@pc:~$ conda activate # conda 쉘 터미널 실행
(base)do@pc:~$ conda deactivate # conda 쉘 터미널 종료
conda가 active되어 있는 상태에서 원하는 python 버전으로 바꾸고 python을 실행합니다.
(base)do@pc:~$ conda search python # 설치가능한 python 버전을 list up
(base)do@pc:~$ conda install python=3.8.20 # python 설치
(base)do@pc:~$ python # python 실행
>>> exit() # python 종료
다양한 python버전으로 가상환경을 만들 수도 있습니다.
(base)do@pc:~$ conda create -n py37 python=3.7 # 가상환경 생성
(py37)do@pc:~$ conda activate py37 # 가상환경 스위칭
(py37)do@pc:~$ python
>>> exit()
-n뒤에 가상환경 이름을 넣으면 되며, 저는 py37로 설정해줬습니다. conda search python으로 체크한 python버전을 python=x.x.x에 입력해줍니다. "conda activate"를 통해 스위칭을 해야 변경 가능합니다.
$ conda env list
위 명령을 통해 생성된 가상환경을 확인 할 수 있습니다.
4. docker방법
docker는 가상환경 툴입니다. 설치방법은 다음과 같습니다.
$ sudo apt-get update # 패키지 업데이트
$ sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common # 필요 패키지 설치
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - # docker GPG키를 추가
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" # docker apt repository 추가
$ sudo apt-get update # 추가한 apt repository에서 패키지 업데이트
$ sudo apt-get install docker-ce docker-ce-cli containerd.io # docker 설치
$ sudo docker --version # 설치 확인
https://hub.docker.com/_/python/tags 에서 "filter tags" 텍스트창에 필요한 버전이 있는지 검색하고, copy 버튼으로 텍스트를 복사합니다.
$ sudo docker pull python:3.6.15 # docker image를 다운받습니다.
$ sudo docker run -it --name py36 python:3.6.15 /bin/bash # docker image로 가상환경(container)을 생성 후 실행합니다.
$ 키보드 ctrl p + q # 가상환경이 실행된 상태에서 빠져나옵니다.
$ sudo docker attach py36 # 가상환경에 접속합니다.
$ 키보드 ctrl a + d # 가상환경을 종료합니다.
$ sudo docker start py36 # 가상환경을 실행합니다.
$ docker ps -a # 가상환경 리스트를 조회합니다.
2번째 줄에서 run은 가상환경을 만든다는 의미이고, -it는 표준입력(stdin)으로 가상 터미널을 연다는 옵션입니다. --name 은 가상환경 이름을 설정 옵션이고, python:3.6.15는 다운받은 가상환경 이미지이며, /bin/bash는 bash로 실행한다는 옵션입니다. run으로 생성된 후엔 "docker start"를 통해서 가상환경을 실행후 "docker attach"해야합니다.
$ python # python 실행
>>> exit() # python 종료
docker에 접속되면 실행 방법은 동일합니다.
Python 여러 버전 Switching
여러 python버전을 선택해서 실행 할 수 있습니다. apt설치법과 수동설치법은 호환이 되는데, conda설치법과는 호환이 되지 않습니다. apt설치법, 수동설치법 기준으로 글을 써보겠습니다. update-alternatives에 python이 설정되어 있는지 확인합니다.
$ sudo update-alternatives --list python
설정되어 있지 않다면, "no alternatives for python" 메시지가 뜹니다. update-alternatives에 python을 등록 해보겠습니다.
$ which python # python symbolic link 위치 확인. 없으면 which python3
/usr/local/bin/python
$ sudo update-alternatives --install /usr/local/bin/python python /usr/local/bin/python3.9 1 # 수동설치법
$ sudo update-alternatives --install /usr/local/bin/python python /usr/bin/python3.10 2 # apt설치법
--install 뒤에 symbolic link에 해당하는 위치를 넣어주고, python 뒤에 구체적인 파일 위치와 property 숫자값을 넣어줍니다. 등록이 되면, 아래 명령어를 통해 버전을 변경 할 수 있습니다.
$ sudo update-alternatives --config python
There are 2 choices for the alternative python (providing /usr/local/bin/python).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/bin/python3.10 2 auto mode
* 1 /usr/bin/python3.10 2 manual mode
2 /usr/local/bin/python3.9 1 manual mode
Press <enter> to keep the current choice[*], or type selection number: 2
$ python -V
Python 3.9.18
python 명령어만으로 실행되는 것을 볼 수 있습니다. 일반적으론 apt설치법, 수동설치법 둘 중에한 방법으로 사용합니다만 이렇게도 된다는 것을 보여주기 위해 준비한 예제였습니다. 같은 방식으로 conda와 docker에서도 사용가능 합니다.
Python에서 제공하는 가상환경
가상환경은 pip로 설치되는 패키지들을 그룹화해서 저장 할 수 있어서 편리합니다. conda와 docker는 자체적으로 가상환경을 지원하고 있습니다. apt방법과 수동설치방법에서도 가상환경을 구성 할 수 있습니다.
$ cd myproject1
$ /usr/local/bin/python3.8 -m pip install virtualenv --user # virtualenv 설치
$ /usr/local/bin/python3.8 -m virtualenv .env_py38 # 가상환경 생성
$ ls -al # 가상환경 폴더 생성 확인
$ source .env_py38/bin/activate # 가상환경 실행
(.env_py38)$ python --version # 가상환경 내에서 python버전 확인
(.env_py38)$ deactivate # 가상환경 종료
$
conda와 유사하게 activate, deactive 명령어로 사용하는 것을 볼 수 있습니다. 하지만 conda와 다르게, 해당 가상환경은 폴더 형태로 만들어지는 점이 차이입니다.
이상으로 글을 마칩니다.
'Etc' 카테고리의 다른 글
[Ubuntu] CUDA 설치 & Multi CUDA 설치 (3) | 2024.04.28 |
---|---|
[Ubuntu] Pytorch 설치 : 버전 호환 CUDA & python (0) | 2024.04.27 |
[개념 정리] GPU 메모리 구조 및 용어 (7) | 2024.01.24 |
[후기] AI 서비스 개발 실패 후기 (10) | 2023.12.11 |
[Ubuntu] 윈도우에서 Ubuntu로 원격 접속 설정 (1) | 2023.05.07 |
댓글