Red Hat Training

A Red Hat training course is available for RHEL 8

36.2. Python のバージョン間の主な違い

RHEL 8 に含まれる Python のバージョンは、さまざまな点で異なります。

Python バインディング

python38 モジュールと python39 モジュール、および python3.11 パッケージスイートには、python36 モジュールに提供されるシステムツール (RPM、DNF、SELinux など) と同じバインディングが含まれていません。したがって、基本オペレーティングシステムとの最大の互換性またはバイナリー互換性が必要な場合は、python36 を使用してください。さまざまな Python モジュールの新しいバージョンと共にシステムバインディングが必要な特殊な例では、pip を介して、Python の venv または virtualenv 環境にインストールされたサードパーティーのアップストリーム Python モジュールと組み合わせて、python36 モジュールを使用します。

Python 3.11 仮想環境は、virtualenv ではなく venv を使用して作成する必要があります

python3-virtualenv パッケージによって提供される RHEL 8 の virtualenv ユーティリティーは、Python 3.11 と互換性がありません。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 仮想環境を作成するには、代わりに python3.11 -m venv コマンドを使用します。このコマンドは、標準ライブラリーの venv モジュールを使用します。