Python 3.12 설치
반응형

CentOS 7 과 Amazon Linux 2 와 같이 오래된 배포판에서는 Python 3.12 와 같이 최신 버전이 제공되지 않는다.

따라서 별도로 소스를 받아 컴파일하여 설치해야 사용할 수 있다. 

 

사전 준비 

Python 3.12 의 경우는 Openssl 1.1.1 설치가 꼭 필수이므로 아래 글을 참고하여 먼저 진행한다.

https://enowy.tistory.com/58

 

Openssl 1.1.1 설치

CentOS 7, Amazon Linux 2와 같이 오래된 배포본에서는 openssl 버전이 낮아 Python 3.12 등의 설치가 불가능하다.그래서 Python 3.12 이 필요하다면 Openssl 1.1.1 의 설치가 꼭 필요하며1.1.1 로 올리면 보다 안전한

enowy.tistory.com

 

Openssl 1.1.1 이 준비되면 필요한 Package를 설치한다. 

sudo yum install -y wget make gcc perl pcre pcre-devel zlib zlib-devel libffi libffi-devel bzip2 bzip2-devel xz xz-devel readline readline-devel sqlite sqlite-devel tkinter gdbm gdbm-devel

 

 

Package 설치가 완료되면 source 를 다운로드 한다.

wget https://www.python.org/ftp/python/3.12.11/Python-3.12.11.tgz

 

 

필요하면 아래와 같이 확인한다.

# lib 확인
$ ls -al /lib64/libssl.so.1.1
lrwxrwxrwx. 1 root root 36 Jun 30 14:29 /lib64/libssl.so.1.1 -> /usr/local/openssl/lib/libssl.so.1.1
$ ls -al /lib64/libcrypto.so.1.1
lrwxrwxrwx. 1 root root 39 Jun 30 14:29 /lib64/libcrypto.so.1.1 -> /usr/local/openssl/lib/libcrypto.so.1.1
$ ls -al /usr/local/openssl/lib/libssl.so.1.1
-rwxr-xr-x. 1 root root 689576 Jun 30 14:20 /usr/local/openssl/lib/libssl.so.1.1
$ ls -al /usr/local/openssl/lib/libcrypto.so.1.1
-rwxr-xr-x. 1 root root 3398200 Jun 30 14:20 /usr/local/openssl/lib/libcrypto.so.1.1

# libffi 과 libffi-devel 패키지 확인
$ rpm -qa | grep libffi
libffi-3.0.13-19.el7.x86_64
libffi-devel-3.0.13-19.el7.x86_64

# bzip2 과 bzip2-devel 패키지 확인
$ rpm -qa | grep bzip2
bzip2-libs-1.0.6-13.el7.x86_64
bzip2-devel-1.0.6-13.el7.x86_64

# xz 과 xz-devel 패키지 확인
$ rpm -qa | grep xz
xz-libs-5.2.2-1.el7.x86_64
xz-devel-5.2.2-1.el7.x86_64
xz-5.2.2-1.el7.x86_64

# readline 과 readline-devel 패키지 확인
$ rpm -qa | grep readline
readline-6.2-11.el7.x86_64
readline-devel-6.2-11.el7.x86_64

# sqlite 과 sqlite-devel 패키지 확인
$ rpm -qa | grep sqlite
sqlite-3.7.17-8.el7_7.1.x86_64
sqlite-devel-3.7.17-8.el7_7.1.x86_64

# gdbm 과 gdb,-devel 패키지 확인
$ rpm -qa | grep sqlite
gdbm-1.13-6.amzn2.0.2.x86_64
gdbm-devel-1.13-6.amzn2.0.2.x86_64

# tkinter 패키지 확인
$ rpm -qa | grep tkinter
tkinter-2.7.18-1.amzn2.0.12.x86_64

# openssl 버전 확인
$ openssl version
OpenSSL 1.1.1w  11 Sep 2023

 

설치 진행

모든 준비가 끝나면 아래와 같이 설치를 진행한다.

# 다운로드한 소스 해제.
tar xvf Python-3.12.11

# 소스 디렉토리 이동.
cd ./Python-3.12.11

# 이전 빌드 흔적 삭제. (최초 설치 때는 필요 없음.)
make clean
make distclean

# configure
./configure --enable-optimizations --with-openssl=/usr/local/openssl

# 빌드 - 모든 작업이 완료되고 0 fail 이 출력되어야 한다.
make -j $(nproc)

# 설치
sudo make altinstall

 

 

이렇게 설치를 진행하고 맨 마지막에 Warning 이 뜬다.

Processing /tmp/tmpevus.jv3a/pip-25.0.1-py3-none-any.whl
Installing collected packages: pip
WARNING: The script pip3.12 is installed in '/usr/local/bin' which is not on PATH.

Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.

Successfully installed pip-25.0.1

WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable. 
It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. 
Use the --root-user-action option if you know what you are doing and want to suppress this warning.

 

이 내용은

  • PATH 에 /usr/local/bin 을 추가하고 
  • pip 사용 시 가상환경(venv) 를 사용하라는 

의미 이다. 

 

첫번째는 아래와 같이 해결한다.

# 아래 내용을 터미널에서 입력하거나
export PATH="/usr/local/bin:$PATH"

# 이 설정을 영구적으로 적용하려면 
# ~/.bashrc 또는 ~/.bash_profile에 위 줄을 추가하세요.

 

두번째는 아래와 같이 사용한다.

# root 권한으로 pip을 실행하면 시스템에 따라 권한 문제나 충돌이 발생할 수 있음
# 가상환경(venv)을 사용하라는 권고임.
# 실제로 패키지 설치/개발 시에는 아래처럼 가상환경을 만들어 사용할 것.

$ python3.12 -m venv myenv
$ source myenv/bin/activate
$ pip install <패키지명>

 

 

설치 점검

아래와 같이 정상 설치 여부를 확인한다.

# 버전 확인
$ python3.12 --version
# 버전이 출력되면 정상



# pip 버전 확인
$ pip3.12 --version
# 버전이 출력되면 정상



# 간단한 파이썬 코드 실행
python3.12 -c "print('Hello, Python 3.12!')"
# Hello, Python 3.12!가 출력되면 정상



# 주요 모듈 import 테스트
$ python3.12 -c "import ssl, bz2, lzma, sqlite3, readline; print('modules ok')"
# 에러 없이 'modules ok'가 출력되면 정상



# venv(가상환경) 생성 테스트
$ python3.12 -m venv testenv
$ source testenv/bin/activate
$ python --version   # 가상환경에서 python 버전이 3.12.x로 나오면 정상
$ deactivate
반응형