8.53. Python-3.14.0

Python 3 パッケージは Python 開発環境を提供します。 オブジェクト指向プログラミング、スクリプティング、大規模プログラムのプロトタイピング、アプリケーション開発などに有用なものです。 Python はインタープリター言語です。

概算ビルド時間: 2.0 SBU
必要ディスク容量: 453 MB

8.53.1. Python 3 のインストール

Python をコンパイルするための準備をします。

./configure --prefix=/usr          \
            --enable-shared        \
            --with-system-expat    \
            --enable-optimizations \
            --without-static-libpython

configure オプションの意味

--with-system-expat

本スイッチは、システムにインストールされている Expat をリンクすることを指示します。

--enable-optimizations

本スイッチは、拡張的ではあるものの高くつく最適化を有効にします。 インタープリターは二度ビルドされます。 そこでは 1 回めのビルドにて実施されるテストを用いて、最適化された最終バージョンが適正化されます。

パッケージをコンパイルします。

make

テストの中には不安定でありハングするものがあります。 そういったものをテストする場合は、各テストケースにおいて 2 分以内の制限をかけてテストスイートを実行してください。

make test TESTOPTS="--timeout 120"

比較的遅いシステムの場合は、その時間制限を増やせば 1 SBU (1 コアを使った Binutils 1 回目のビルド時間) で処理できるはずです。 テストの中には一風変わったものがあって、自動的に再実行された上で失敗するものがあります。 一度失敗して再実行の際に成功したものは、テストが成功したものとみなすことができます。

パッケージをインストールします。

make install

Python 3 プログラムやモジュールをインストールする際には、全ユーザー向けのインストールを行うために root ユーザーになって pip3 コマンドを用いています。 このことは Python 開発者が推奨している、仮想環境内にて一般ユーザーにより(そのユーザーが pip3 を実行することで)パッケージビルドを行う方法とは相容れないものです。 これを行っているため、root ユーザーとして pip3 を用いると、警告メッセージが複数出力されます。

開発者がなぜその方法を推奨しているかというと、システムパッケージマネージャー(たとえば dpkg)などと衝突が発生するからです。 LFS ではシステムワイドなパッケージマネージャーを利用していないため、このことは問題となりません。 また pip3 そのものが、自分の最新版が存在していないかどうかを実行時に確認します。 LFS の chroot 環境においては、ドメイン名解決がまだ設定されていないので、最新版の確認は失敗して警告が出力されます。

LFS システムを再起動してネットワーク設定を行えば、(最新版の入手可能時にはいつでも)あらかじめビルドされていた wheel を PyPI から更新するような警告メッセージが示されます。 もっとも LFS では pip3 を Python 3 の一部として考えるので、個別に更新しないでください。 したがってあらかじめビルドされた wheel を更新することは、ソースコードから Linux システムをビルドするという目的から逸脱してしまいます。 このことから、pip3 の最新版を求める警告は無視してください。 警告メッセージを省略したい場合は、以下のコマンドを実行します。 ここでは設定ファイルを生成します。

cat > /etc/pip.conf << EOF
[global]
root-user-action = ignore
disable-pip-version-check = true
EOF
[重要]

重要

LFS や BLFS においては通常、Python モジュールのビルドとインストールには pip3 コマンドを用いています。 この両ブックにおいて実行する pip3 install コマンドは、(Python 仮想環境内でない場合には) root ユーザーで実行するようにしてください。 root ユーザー以外によって pip3 install を実行しても問題なく動作するように見えるかもしれませんが、インストールしたモジュールが別のユーザーからはアクセスできない事態を作り出してしまいます。

pip3 install は、すでにインストールされているモジュールを自動的に再インストールすることは行いません。 pip3 install コマンドを使ってモジュールのアップグレードを行う(たとえば meson-0.61.3 から meson-0.62.0 にするような場合)には、コマンドラインに --upgrade オプションを含めてください。 またモジュールのダウングレードや再インストールが必要となる理由が確実にあるのであれば、コマンドラインに --force-reinstall --no-deps を含めて実行してください。

必要なら、整形済みドキュメントをインストールします。

install -v -dm755 /usr/share/doc/python-3.14.0/html

tar --strip-components=1  \
    --no-same-owner       \
    --no-same-permissions \
    -C /usr/share/doc/python-3.14.0/html \
    -xvf ../python-3.14.0-docs-html.tar.bz2

ドキュメント install コマンドの意味

--no-same-owner--no-same-permissions

インストールするファイルの所有者とパーミッションを適切に設定します。 このオプションがないと tar によって展開されるファイルは、アップストリームが作り出した値になってしまいます。

8.53.2. Python 3 の構成

インストールプログラム: idle3, pip3, pydoc3, python3, python3-config
インストールライブラリ: libpython3.14.so, libpython3.so
インストールディレクトリ: /usr/include/python3.14, /usr/lib/python3, /usr/share/doc/python-3.14.0

概略説明

idle3

Python に特化した GUI エディターを起動するラッパースクリプト。 このスクリプトを実行するには、Python より前に Tk をインストールして、Python モジュールである Tkinter をビルドしておく必要があります。

pip3

Python のパッケージインストーラー。 この pip を使って Python Package Index などのインデックスサイトから各種パッケージをインストールできます。

pydoc3

Python ドキュメントツール。

python3

Python インタープリターであり、対話的なオブジェクト指向プログラミング言語。