본문 바로가기
Etc

[Ubuntu] Python 설치 + 여러 버전 동시 설치

by xoft 2025. 1. 19.

본 글에서는 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와 다르게, 해당 가상환경은 폴더 형태로 만들어지는 점이 차이입니다.

 

 

이상으로 글을 마칩니다.

댓글