第16章 動的プログラミング言語のインストールおよび使用
アプリケーションの開発と実行のために、Red Hat は Python、PHP、Tcl/Tk などのランタイム言語を提供しています。
16.1. Python の概要 リンクのコピーリンクがクリップボードにコピーされました!
Python は、オブジェクト指向、命令、機能、手順などの複数のプログラミングパラダイムをサポートする、高レベルのプログラミング言語です。Python は動的なセマンティクスを持ち、汎用プログラミングに使用できます。
Red Hat Enterprise Linux では、システムツール、データ分析用のツール、または Web アプリケーションを提供するパッケージなど、システムにインストールされている多くのパッケージが Python で記述されています。このパッケージを使用するには、python* パッケージがインストールされている必要があります。
16.1.1. Python のバージョン リンクのコピーリンクがクリップボードにコピーされました!
Python で互換性のない 2 つのバージョン (Python 2.x および Python 3.x) が広く使用されています。RHEL 8 は、以下のバージョンの Python を提供します。
| バージョン | インストールするパッケージ | コマンドの例 | 利用可能となったバージョン | ライフサイクル |
|---|---|---|---|---|
| Python 3.11 |
|
| RHEL 8.8 | より短い |
| Python 3.12 |
|
| RHEL 8.10 | より短い |
サポート期間の詳細は、Red Hat Enterprise Linux のライフサイクル およびRed Hat Enterprise Linux Application Streams ライフサイクル を参照してください。
Python 3.11 と Python 3.12 は、python3.11 パッケージと python3.12 パッケージを含む、非モジュール式の RPM パッケージ群として配布されています。
同じ RHEL 8 システムに複数の Python バージョンを並行してインストールできます。
Python をインストール、起動、またはその他の方法で操作する際には、必ず Python のバージョンを指定してください。たとえば、パッケージ名またはコマンド名で、python の代わりに python3 を使用します。Python 関連のコマンドには、すべてバージョンを含める必要があります。たとえば、pip3、pip2、pip3.11、または pip3.12 などです。
RHEL 8 では、バージョン指定のない python コマンド (/usr/bin/python) は、デフォルトでは利用できません。alternatives コマンドを使用すれば設定できます。手順については、バージョン指定のない Python の設定 を参照してください。
alternatives コマンドを使用して加えられた変更を除き、/usr/bin/python への手動の変更は、更新時に上書きされる可能性があります。
システム管理者は、以下の理由で Python 3 を使用します。
- Python 3 は、Python プロジェクトの主な開発方向を表します。
- アップストリームコミュニティーでの Python 2 のサポートは 2020 年に終了しました。
- 人気のある Python ライブラリーは、アップストリームでの Python 2 サポートを終了します。
-
お客様の
Python 3への移行を容易にするために、Red Hat Enterprise Linux 8 の Python 2 のライフサイクルが短くなっています。
開発者の場合、Python 2 と比較して Python 3 には以下の利点があります。
- Python 3 を使用すると、表現力があり、メンテナンスが可能な正しいコードをより簡単に記述できます。
- Python 3 で書かれたコード寿命は長くなります。
-
Python 3 には、
asyncio、f-strings、高度なアンパッキング、キーワードのみの引数、例外チェーンなどの新機能があります。
ただし、レガシーソフトウェアでは、/usr/bin/python を Python 2 に設定する必要がある場合があります。このため、Red Hat Enterprise Linux 8 にはデフォルトの Python パッケージは同梱されていません。バージョン指定のない Python の設定 で説明されているように、/usr/bin/python として Python 2 または 3 のどちらを使用するかを選択できます。
Red Hat Enterprise Linux 8 のシステムツールは、内部の platform-python パッケージで提供される Python バージョン 3.6 を使用します。このパッケージをお客様が直接使用することは意図されていません。python3.11 パッケージに含まれている python3.11 コマンドを使用してください。
platform-python パッケージは他のパッケージで必要となるため、RHEL 8 から削除しないでください。
16.1.2. Python のバージョン間の主な違い リンクのコピーリンクがクリップボードにコピーされました!
RHEL 8 における Python 3.6、3.11、および 3.12 は、システムバインディングと仮想環境の作成方法の点で違いがあります。システムツールとの完全な互換性が必要な場合は、python36 モジュールを使用してください。Python 3.11 および 3.12 には、virtualenv ではなく venv を使用してください。
- Python バインディング
-
python3.11およびpython3.12パッケージ群には、python36モジュール用に提供されているシステムツール (RPM、DNF、SELinux など) へのバインディングは含まれていません。したがって、ベースとなるオペレーティングシステムとの最大の互換性、またはバイナリー互換性が必要な場合は、python36を使用してください。さまざまな Python モジュールの新しいバージョンと共にシステムバインディングが必要な特殊な例では、pipを介して、Python のvenvまたはvirtualenv環境にインストールされたサードパーティーのアップストリーム Python モジュールと組み合わせて、python36モジュールを使用します。 - Python 3.11 および Python 3.12 の仮想環境は、
virtualenvではなくvenvを使用して作成する必要があります -
python3-virtualenvパッケージによって提供される RHEL 8 のvirtualenvユーティリティーは、Python 3.11 および Python 3.12 と互換性がありません。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 の仮想環境を作成するには、代わりに python3.11 -m venv または python3.12 -m venv コマンドを使用してください。これらのコマンドでは、標準ライブラリーの venv モジュールが使用されます。