19장. 동적 프로그래밍 언어 설치 및 사용
Red Hat은 Python, PHP, Tcl/TK와 같은 다양한 프로그래밍 언어를 제공합니다. 이를 사용하여 자체 애플리케이션 및 서비스를 개발할 수 있습니다.
19.1. Python 소개
Python은 개체 지향, 명령적, 기능적, 절차적 패러다임과 같은 여러 프로그래밍 패러다임을 지원하는 고급 프로그래밍 언어입니다. Python에는 동적 의미 체계가 있으며 범용 프로그래밍에 사용할 수 있습니다.
Red Hat Enterprise Linux를 사용하면 시스템 툴, 데이터 분석 툴 또는 웹 애플리케이션을 제공하는 패키지와 같이 시스템에 설치된 많은 패키지가 Python으로 작성됩니다. 이러한 패키지를 사용하려면 python*
패키지가 설치되어 있어야 합니다.
19.1.1. Python 버전
호환되지 않는 Python 버전은 널리 사용되는 Python 2.x 및 Python 3.x입니다. RHEL 8에서는 다음 버전의 Python을 제공합니다.
버전 | 설치할 패키지 | 명령 예 | 이후 사용 가능 | 라이프 사이클 |
---|---|---|---|---|
Python 3.6 |
|
| RHEL 8.0 | 전체 RHEL 8 |
Python 2.7 |
|
| RHEL 8.0 | 짧음 |
Python 3.8 |
|
| RHEL 8.2 | 짧음 |
Python 3.9 |
|
| RHEL 8.4 | 짧음 |
Python 3.11 |
|
| RHEL 8.8 | 짧음 |
Python 3.12 |
|
| RHEL 8.10 | 짧음 |
지원 기간에 대한 자세한 내용은 Red Hat Enterprise Linux 라이프 사이클 및 Red Hat Enterprise Linux Application Streams 라이프 사이클을 참조하십시오.
3.9까지의 각 Python 버전은 별도의 모듈에 배포됩니다. Python 3.11 및 Python 3.12는 python3.11
및 python3.12
패키지를 포함하여 수정되지 않은 RPM 패키지 제품군으로 배포됩니다.
동일한 RHEL 8 시스템에 여러 Python 버전을 병렬로 설치할 수 있습니다.
Python 버전을 설치하거나, 호출하거나, 다른 방식으로 상호 작용할 때 항상 Python 버전을 지정합니다. 예를 들어 패키지 및 명령 이름에 python 대신 python
3
을 사용합니다. 모든 Python 관련 명령에도 버전이 포함되어야 합니다(예: pip3
,pip2
,pip3.8
,pip3.9
,pip3.11
또는 pip3.12
).
버전이 없는 python
명령(/usr/bin/python
)은 RHEL 8에서 기본적으로 사용할 수 없습니다. alternatives
명령을 사용하여 구성할 수 있습니다. 자세한 내용은 버전이 없는 Python 구성을참조하십시오.
alternatives
명령을 사용하여 변경한 사항을 제외하고 /usr/bin/python
에 대한 수동 변경 사항은 업데이트 시 덮어쓸 수 있습니다.
시스템 관리자는 다음과 같은 이유로 Python 3을 사용합니다.
- Python 3은 Python 프로젝트의 주요 개발 방향을 나타냅니다.
- 업스트림 커뮤니티의 Python 2 지원은 2020년에 종료되었습니다.
- 인기 있는 Python 라이브러리는 업스트림에서 Python 2 지원을 중단하고 있습니다.
-
Red Hat Enterprise Linux 8의 Python 2는 라이프사이클이 짧고 고객을 위해
Python 3
으로 원활하게 전환하는 것을 목표로 합니다.
개발자의 경우 Python 3은 Python 2에 비해 다음과 같은 이점이 있습니다.
- Python 3를 사용하면 표현, 유지 관리 및 올바른 코드를 보다 쉽게 작성할 수 있습니다.
- Python 3으로 작성된 코드는 더 길게 됩니다.
-
Python 3에는
asyncio
, f-strings, 고급 압축 풀기, 키워드 전용 인수, 연결된 예외 등의 새로운 기능이 있습니다.
그러나 레거시 소프트웨어를 사용하려면 /usr/bin/python
을 Python 2로 구성해야 할 수 있습니다. 이러한 이유로 Red Hat Enterprise Linux 8과 함께 기본 python
패키지가 배포되지 않으며 버전되지 않은 Python 구성에 설명된 대로 Python 2와 3을 /usr/bin/python
으로 사용할 수 있습니다.
Red Hat Enterprise Linux 8의 시스템 툴은 고객이 직접 사용할 수 없는 내부 platform-python
패키지에서 제공하는 Python 버전 3.6을 사용합니다. Python 3.6용 python36
패키지에서 python3
또는 python3.6
명령을 사용하거나 이후 Python 버전을 사용하는 것이 좋습니다.
다른 패키지에 필요하므로 RHEL 8에서 platform-python
패키지를 제거하지 마십시오.
19.1.2. Python 버전 간의 주요 차이점
RHEL 8에 포함된 Python 버전은 다양한 측면에서 다릅니다.
Python 바인딩
python38
및
및 python
3.11python3.12
패키지 모음에는 python36
모듈에 제공되는 시스템 툴(RPM, DNF, SELinux 등)에 대한 동일한 바인딩이 포함되지 않습니다. 따라서 기본 운영 체제 또는 바이너리 호환성이 가장 필요한 인스턴스에서 python36
을 사용합니다. 시스템 바인딩이 다양한 Python 모듈의 최신 버전과 함께 필요한 고유 인스턴스의 경우 Python의 venv
또는 virtualenv
환경에 pip
를 통해 설치된 타사 업스트림 Python 모듈과 함께 python36
모듈을 사용합니다.
Python 3.11 및 Python 3.12 가상 환경은 virtualenv
대신 venv
를 사용하여 생성해야 합니다.
python3-
패키지에서 제공하는 RHEL 8의 virtualenv 유틸리티는 Python 3.11 및 Python 3.12와 호환되지 않습니다. virtualenv
virtualenv
를 사용하여 가상 환경을 생성하려고 하면 오류 메시지와 함께 실패합니다. 예를 들면 다음과 같습니다.
$ virtualenv -p python3.11 venv3.11
Running virtualenv with interpreter /usr/bin/python3.11
ERROR: Virtual environments created by virtualenv < 20 are not compatible with Python 3.11.
ERROR: Use python3.11 -m venv
instead.
Python 3.11 또는 Python 3.12 가상 환경을 생성하려면 표준 라이브러리에서 venv
모듈을 사용하는 python3.11 -m venv
또는 python3.12 -m venv
명령을 사용합니다.