본문 바로가기

Programming Language/Python

[Python] Python 여러 버전 설치해서 사용하기 (Windows, Ubuntu)

파이썬을 개발하다보면 특정 프로젝트에서는 특정한 Python 버전으로 사용을 해야되서 한 OS에서 여러가지 Python 버전을 설치해야 하는 경우가 생긴다. 개발 환경이 Windows 또는 Ubuntu linux에서 진행이 되므로 각 OS에서 어떻게 여러 버전의 Python을 설치하고 지정할 수 있는지 확인해본다.

 

Ubuntu

 

현재 설치된 Ubuntu에서 apt-get으로 install 가능한 패키지들은 아래 명령으로 확인할 수 있다

root@DESKTOP-GH94F8C:/etc/alternatives# sudo apt list | grep python3.

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

astro-python3/jammy 3.0 all
cantor-backend-python3/jammy 4:21.12.3-0ubuntu1 amd64
freecad-python3/jammy 0.19.2+dfsg1-3ubuntu1 amd64
freeradius-python3/jammy-updates 3.0.26~dfsg~git20220223.1.00ed0241fa-0ubuntu3.2 amd64
games-python3-dev/jammy 4 all
gcc-python3-dbg-plugin/jammy 0.17-6ubuntu2 amd64
...
python3-aalib/jammy 0.4-2 all
python3-absl/jammy 0.15.0-1 all
python3-abydos/jammy 0.5.0+git20201231.344346a-6 all
python3-access2base/jammy-updates,jammy-security 1:7.3.7-0ubuntu0.22.04.4 all
python3-acme/jammy-updates 1.21.0-1ubuntu0.1 all
python3-acora/jammy 2.2-1.3build4 amd64
python3-acoustid/jammy 1.2.2-1 all
python3-actdiag/jammy 2.0.0+dfsg-1 all
python3-actionlib-msgs/jammy 1.13.1-1 all

 

 

현재 설치되어 사용중인 Python 현황은 아래 명령어 들로 확인 가능하다. 우선 /usr/bin 폴더에 python* 시작하는 명령어들을 찾아본다. 일부 하위 링크를 포함하고 있으면 따라서 추적해본다. (/usr/bin/python3 -> /etc/alternatives/python3)

 

아래 상황은 Python 3.11.9 버전이 현재 Python3 명령어로 Symbolic Link가 걸려 있음을 알 수 있다.

root@DESKTOP-GH94F8C:/etc/alternatives# ls -la /usr/bin/python*
-rwxr-xr-x 1 root root     977 Dec 25  2021 /usr/bin/python-dotenv
lrwxrwxrwx 1 root root      25 Apr 15 02:00 /usr/bin/python3 -> /etc/alternatives/python3
lrwxrwxrwx 1 root root      17 Aug 18  2022 /usr/bin/python3-config -> python3.10-config
-rwxr-xr-x 1 root root 5904904 Nov 21 00:14 /usr/bin/python3.10
lrwxrwxrwx 1 root root      34 Nov 21 00:14 /usr/bin/python3.10-config -> x86_64-linux-gnu-python3.10-config
-rwxr-xr-x 1 root root 6720536 Apr  7 02:59 /usr/bin/python3.11

root@DESKTOP-GH94F8C:/etc/alternatives# ls -la /etc/alternatives/python3
lrwxrwxrwx 1 root root 19 Apr 15 02:00 /etc/alternatives/python3 -> /usr/bin/python3.11

root@DESKTOP-GH94F8C:/etc/alternatives# python3 -V
Python 3.11.9

 

테스트를 위해서 3.12 버전을 추가 설치하고 버전 지정을 해보자. 새 버전 인스톨은 아래와 같이 api install로 수행하면 된다.

root@DESKTOP-GH94F8C:/etc/alternatives# sudo apt install python3.12
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  libpython3.12-minimal libpython3.12-stdlib python3.12-minimal
Suggested packages:
  python3.12-venv binfmt-support
The following NEW packages will be installed:
  libpython3.12-minimal libpython3.12-stdlib python3.12 python3.12-minimal
0 upgraded, 4 newly installed, 0 to remove and 44 not upgraded.
Need to get 6122 kB of archives.
After this operation, 23.2 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu jammy/main amd64 libpython3.12-minimal amd64 3.12.2-1+jammy3 [874 kB]
Get:2 https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu jammy/main amd64 python3.12-minimal amd64 3.12.2-1+jammy3 [2516 kB]
Get:3 https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu jammy/main amd64 libpython3.12-stdlib amd64 3.12.2-1+jammy3 [2041 kB]
Get:4 https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu jammy/main amd64 python3.12 amd64 3.12.2-1+jammy3 [692 kB]
Fetched 6122 kB in 4s (1613 kB/s)
Selecting previously unselected package libpython3.12-minimal:amd64.
(Reading database ... 57320 files and directories currently installed.)
Preparing to unpack .../libpython3.12-minimal_3.12.2-1+jammy3_amd64.deb ...
Unpacking libpython3.12-minimal:amd64 (3.12.2-1+jammy3) ...
Selecting previously unselected package python3.12-minimal.
Preparing to unpack .../python3.12-minimal_3.12.2-1+jammy3_amd64.deb ...
Unpacking python3.12-minimal (3.12.2-1+jammy3) ...
Selecting previously unselected package libpython3.12-stdlib:amd64.
Preparing to unpack .../libpython3.12-stdlib_3.12.2-1+jammy3_amd64.deb ...
Unpacking libpython3.12-stdlib:amd64 (3.12.2-1+jammy3) ...
Selecting previously unselected package python3.12.
Preparing to unpack .../python3.12_3.12.2-1+jammy3_amd64.deb ...
Unpacking python3.12 (3.12.2-1+jammy3) ...
Setting up libpython3.12-minimal:amd64 (3.12.2-1+jammy3) ...
Setting up python3.12-minimal (3.12.2-1+jammy3) ...
Setting up libpython3.12-stdlib:amd64 (3.12.2-1+jammy3) ...
Setting up python3.12 (3.12.2-1+jammy3) ...
Processing triggers for mailcap (3.70+nmu1ubuntu1) ...
Processing triggers for man-db (2.10.2-1) ...
root@DESKTOP-GH94F8C:/etc/alternatives#

 

아래 update-alternatives 명령을 사용해서 현재 잡혀있는 python3 의 link 현황을 샆펴본다. 현재 3.11 하나로 python3 링크가 잡혀 있음을 볼 수 있다.

root@DESKTOP-GH94F8C:/etc/alternatives# sudo update-alternatives --config python3
There is only one alternative in link group python3 (providing /usr/bin/python3): /usr/bin/python3.11
Nothing to configure.

 

새로 설치한 3.12버전을 python3 동일한 링크로 2번 순위를 지정하여 링크 생성한다. 링크 생성 명령은 아래와 같다. 생성 후 확인해 보면 최근에 설치된 python3가 auto mode로 최우선으로 설정된 것을 볼 수 있다.

 

sudo update-alternatives --install [링크] [이름] [실행 파일] [우선 순위]

 

root@DESKTOP-GH94F8C:/etc/alternatives# sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 2
update-alternatives: using /usr/bin/python3.12 to provide /usr/bin/python3 (python3) in auto mode

root@DESKTOP-GH94F8C:/etc/alternatives# update-alternatives --config python3
There are 2 choices for the alternative python3 (providing /usr/bin/python3).

  Selection    Path                 Priority   Status
------------------------------------------------------------
* 0            /usr/bin/python3.12   2         auto mode
  1            /usr/bin/python3.11   1         manual mode
  2            /usr/bin/python3.12   2         manual mode

Press <enter> to keep the current choice[*], or type selection number:

 

Python3 링크의 버전을 python3.11로 바꾸어 본다. update-altenatives 명령어로 현재 설정을 불러온 후 current chioce에서 1번 3.11 을 선택한다. 그러면 python3 링크에서 1번 설정으로 링크를 바꾼다. selection 후 python3를 실행해 보면 정상적으로 3.11버전으로 선택되어 있음을 알 수 있다.

root@DESKTOP-GH94F8C:/etc/alternatives# update-alternatives --config python3
There are 2 choices for the alternative python3 (providing /usr/bin/python3).

  Selection    Path                 Priority   Status
------------------------------------------------------------
* 0            /usr/bin/python3.12   2         auto mode
  1            /usr/bin/python3.11   1         manual mode
  2            /usr/bin/python3.12   2         manual mode

Press <enter> to keep the current choice[*], or type selection number: 1
update-alternatives: using /usr/bin/python3.11 to provide /usr/bin/python3 (python3) in manual mode
root@DESKTOP-GH94F8C:/etc/alternatives# update-alternatives --config python3
There are 2 choices for the alternative python3 (providing /usr/bin/python3).

  Selection    Path                 Priority   Status
------------------------------------------------------------
  0            /usr/bin/python3.12   2         auto mode
* 1            /usr/bin/python3.11   1         manual mode
  2            /usr/bin/python3.12   2         manual mode

Press <enter> to keep the current choice[*], or type selection number: 1
root@DESKTOP-GH94F8C:/etc/alternatives#
root@DESKTOP-GH94F8C:/etc/alternatives# python3
Python 3.11.9 (main, Apr  6 2024, 17:59:24) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

 

Windows

윈도우즈의 경우 실행 버전이 여러개일 경우 시스템 환경 변수의 제일 상단 설정이 우선으로 적용되게 된다.

아래와 같이 python3.11 버전 설치 폴더를 3.12 폴더보다 위에 설정 하고 터미널에서 python을 입력하면 버전 3.11이 실행됨을 볼 수 있다.

 

환경 변수 설정 후 python 실행 결과

 

파이썬에서 가상환경을 사용할 경우 가상환경 생성시 특정 python 버전으로 가상환경을 설정할 수 있다.

 

py --list를 입력하면 현재 윈도우즈에 설치된 python list를 조회할 수 있다.

PS C:\Users\skkkm> py --list
 -V:3.12 *        Python 3.12 (64-bit)
 -V:3.11          Python 3.11 (64-bit)
 -V:2.7           Python 2.7

 

특정 버전으로 가상환경을 만드려면 py에 버전을 명시하고 아래와 같이 생성한다.

PS C:\Users\skkkm> py -3.11 -m venv .venv

 

-- The End -- 

'Programming Language > Python' 카테고리의 다른 글

[Python] python 개발환경 구축하기 (windows)  (1) 2024.02.13