본문 바로가기
SW 개발/Python

Python 여러 버전 설치 방법 (3.x and 3.y 동시 설치)

by Kibua20 2021. 9. 12.

상용 우분투 서버에 파이썬 프로그램을 하나의 설치 파일로 만들어서 배포하는 작업을 진행 중에 있습니다.  최대한 많은 리눅스 서버와 호환성을 유지하기 위해서  가장 낮은 버전의 우분투와 glibc 버전의 환경에서 설치 파일을 만들어야 합니다.  현재 사용하고 있는 서버의 우분투 버전을 조사한 결과 14.04, 16.04, 18.04 버전을 사용하고 있으며, 가장 낮은 14.04 버전을 기준으로 실행 파일을 생성하기로 했습니다.  즉, 우분투 14.04 서버에서 빌드한 프로그램은 14.04 이후 버전 (16.04, 18.04, 20.04) 서버에서 구동을 시킬 수 있습니다. 

 

우분투 14.04 버전을 확인한 결과 Python 2.7.6 버전과 3.4 버전이 설치되어 있고, 설치 파일 생성을 위한 pyinstaller를 실행했으나 pyinstaller는 Python 3.5+ 버전을 필요해서 기존에 설치된 3.4 버전에 추가로 3.5 버전을 설치해야 합니다. 

 

ubuntLinux version 4.4.0-148-generic (buildd@lgw01-amd64-014) (gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.4) ) #174~14.04.1-Ubuntu SMP Thu May 9 08:17:37 UTC 2019

 

우분투 14.04버전에 설치된 Python 버전 확인

$ python -V
Python 2.7.6

 

$ python3 -V
ython 3.4.3

 

$ pyinstaller hello.py
PyInstaller requires at least Python 2.7 or 3.5+.

 

$ls -al /usr/bin/python*

 

우분투 14.04 버전에 설치된 Python 버전 확인 (Python 2.7 과 3.4 버전은 기본 설치, 3.5 버전을 추가 설치함)

 

 

Python 3.5 추가 설치

apt install 로 지원하는 Python 버전을 $ sudo apt list | grep python3.  명령어를 통해서 확인합니다. 우분투 14.04에서는 3.4 버전과 3.5 버전을 apt 설치를 지원하고 있어 쉽게 설치 가능합니다. 만일 apt로 설치가 안된다면 Python 소스 직접 다운 받아서 빌드를 해야 하는데  직접 빌드하는 것은 시간도 오래 걸리고 쉽지 않습니다.

 

Python 3.5 버전 설치는 아래 명령어로 설치 합니다.

$ sudo apt install python3.5

 

apt install로 설치 가능한 Python 버전 확인 (3.4 버전과 3.5 버전)

 

Python3에 대한 버전 지정 (update-alternatives)

Python 3.4와 Python 3.5 버전을 설치된 상태에서 python3 심볼릭 링크를 python3.5로 지정하기 위해서 update-alternatives 명령어를 사용합니다.

 

# python 이름을 설정된 alternatives 확인: 현재 설정이 없다

$ sudo update-alternatives --config python
update-alternatives: error: no alternatives for python

 

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

# python3.5 버전을 우선 순위 1로 지정

$ sudo update-alternatives --install /usr/bin/python3 python  /usr/bin/python3.5    1
update-alternatives: using /usr/bin/python3.5 to provide /usr/bin/python3 (python) in auto mode

 

# python3.4 버전을 우선 순위 2로 지정

$ sudo update-alternatives --install /usr/bin/python3 python  /usr/bin/python3.4    2
update-alternatives: using /usr/bin/python3.4 to provide /usr/bin/python3 (python) in auto mode

# python 우선 순위 확인

$ sudo update-alternatives --config python
There are 2 choices for the alternative python (providing /usr/bin/python3).

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

Press enter to keep the current choice[*], or type selection number: 2    (2번 항목, python 3.5를 default 로 변경)

update-alternatives: using /usr/bin/python3.5 to provide /usr/bin/python3 (python) in manual mode

 

#Python 3 명령어 확인
$ python3 -V
Python 3.5.2

 

update-alternatives 사용

 

 

Mac에서 Python 버전 설치 지정하기

 우분투에서 update-alternavtives를 통해서 하나의 PC에 여러 버전의 Python 설치 가능합니다. 하지만, MacOS에서는 update alternatives를 지원하지 않습니다. Mac OS 에서 /usr/local/bin/python3의 symbolic link를 원하는 Python 버전으로 직접 변경해야 합니다. 

 

1. MaOS에서 설치된 Python 버전 확인

Mac OS에서는 Brew를 통해서 설치된 Python은 /usr/local/bin/python* 에 설치되면, 설치된 Python 버전을 아래와 같이 ls -al /usr/local/bin/python* 명령어로 확인합니다.  

 

% which python3 

% ls -al /usr/local/bin/python*

 

제 경우는 /usr/local/bin/python* 확인  시 python 3.7, python 3.8, python 3.9버전을 설치되어 있습니다.  

 

Python버전 확인

 

2. MaOS에서 설치된 Python3의 버전 변경

/usr/local/bin/python3 의 symbolic link를 /usr/local/bin/python 3.9버전으로 변경합니다.   

 

# Python3 을 Python 3.9 버전으로 설정하는 경우

% ln -s -f /usr/local/bin/python3.9 /usr/local/bin/python3 

 

# Python3 을 Python 3.8 버전으로 설정하는 경우

% ln -s -f /usr/local/bin/python3.8 /usr/local/bin/python3 

 

※ 주의 사항

Python 3.4 버전에서 설치한 모듈들은 /usr/local/lib/python3.4/dist-packages에 설치되기 때문에 필요한 lib는 3.5 버전에도 동일하게 재 설치해야 합니다. 

 

 System에 Python 여러  버전을 사용하는 경우에는 가상환경을 사용하는 것을 추천됩니다.  가상 환경에 대한 설명을 아래 링크를 참조해주세요. 

[SW 개발/Python] - Python 가상환경(Virtual Environment) 만들기 위한 virtualenv 명령어 및 실행 예제

 

관련 글

[모바일 SW 개발/Python] - Python code 숨기는 방법: PyInstaller로 실행 파일 만들기

[모바일 SW 개발/Python] - Python 폴더 및 파일 처리 함수 모음

[개발환경] - GitHub 아이디/패스워드 입력 없이 사용하는 방법

[모바일 SW 개발/Python] - Python: 폴더 백업 기능 구현 (7zip 압축, Sample code)

[모바일 SW 개발/REST API] - JWT(JSON Web Token) Encoding 방법 (Python sample code)

[모바일 SW 개발/Python] - Python 에러: /usr/bin/env: `python3\r': 그런 파일이나 디렉터리가 없습니다

[모바일 SW 개발/Python] - Python 소스 숨기는 방법: pyc 활용 (Bytecode로 컴파일)

[모바일 SW 개발/Python] - Python 표준 입출력(stdin/stdout) 활용 - 리눅스 프로그램과 연동

[모바일 SW 개발/Python] - Python JSON 사용 시 TypeError: Object of type bytes is not JSON serializable

[모바일 SW 개발/Python] - Python SyntaxError: Non-ASCII character in file on, but no encoding declared

[모바일 SW 개발/Python] - Python 2.7과 3.8호환성: a bytes-like object is required, not 'str'에러 수정

[모바일 SW 개발/Python] - [Tips] Python: XML Parsing 시 multiple elements on top level

[SW 개발/Python] - Python 가상환경(Virtual Environment) 만들기 위한 virtualenv 명령어 및 실행 예제




댓글