8.50. Python-3.10.6

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

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

8.50.1. Python 3 のインストール

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

./configure --prefix=/usr        \
            --enable-shared      \
            --with-system-expat  \
            --with-system-ffi    \
            --enable-optimizations

configure オプションの意味

--with-system-expat

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

--with-system-ffi

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

--enable-optimizations

本スイッチは安定的ではあるものの高くつく最適化を有効にします。

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

make

この時点においてテスト実行することはお勧めしません。 部分的にしか仕上がっていない LFS 環境では安定せずハングすることがあります。 テストを必要とする場合は、本章を一番最後まで進めてから再度実行するか、あるいは BLFS において Python 3 をインストール際に行います。 そうではなくここでテスト実行をするなら make test を実行します。

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

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.10.6/html

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

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

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

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

8.50.2. Python 3 の構成

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

概略説明

2to3

Python 2.x のソースコードを読み込み、種々の変更を行って Python 3.x 用の適正なソースコードに変換するための Python プログラムです

idle3

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

pip3

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

pydoc3

Python ドキュメントツール。

python3

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