Alpine Linux への Python インストール
Alpine Linux は軽量なLinuxディストリビューションとして人気があり、Dockerコンテナ環境でよく使用されます。しかし、Pythonのインストール方法が一般的なディストリビューションとは異なるため、初心者は戸惑うことがあります。この記事では、Alpine LinuxにPythonとpipを正しくインストールする方法を解説します。
問題点
Alpine Linuxで以下のコマンドを実行するとエラーが発生します:
$ apk add --update python3.8 python3-pip
ERROR: unsatisfiable constraints:
python3-pip (missing):
required by: world[python3-pip]
python3.8 (missing):
required by: world[python3.8]
これは、Alpineのパッケージ名が python3.8
ではなく python3
、python3-pip
ではなく py3-pip
となっているためです。
基本的な解決方法
1. 標準的なインストール方法
最もシンプルで推奨される方法は以下のコマンドです:
apk add python3 py3-pip
TIP
--no-cache
オプションを追加すると、キャッシュを残さないのでDockerイメージを軽量化できます:
apk add --no-cache python3 py3-pip
2. コミュニティリポジトリの有効化
py3-pip
パッケージはコミュニティリポジトリに含まれているため、リポジトリが有効になっていることを確認してください:
# リポジトリ設定ファイルを確認
cat /etc/apk/repositories
# コミュニティリポジトリが無効になっている場合(先頭に#がある)、有効化する
sed -i 's/^#.*\/community/\/community/' /etc/apk/repositories
# パッケージリストを更新
apk update
# 再度インストールを試みる
apk add python3 py3-pip
特定のバージョンをインストールする方法
特定のPythonバージョンをインストールしたい場合は、セマンティックバージョニングを使用します:
# Python 3.8系の最新バージョンをインストール
apk add python3=~3.8
# 特定のリポジトリからインストール(エッジ版が必要な場合)
apk --update --no-cache add python3~3.11 --repository=http://dl-cdn.alpinelinux.org/alpine/edge/main
Dockerfileでの使用例
DockerfileでPython環境を構築する場合は以下のように記述します:
# Pythonの環境変数を設定
ENV PYTHONUNBUFFERED=1
# Pythonとpipをインストール
RUN apk add --update --no-cache python3 && \
ln -sf python3 /usr/bin/python && \
python3 -m ensurepip && \
pip3 install --no-cache --upgrade pip setuptools
INFO
ln -sf python3 /usr/bin/python
は、python
コマンドでPython 3が実行されるようにシンボリックリンクを作成します。
ソースからのビルドインストール
特殊な状況では、ソースからPythonをビルドする方法もあります:
FROM alpine:latest
# ビルド時にPythonバージョンを指定
ARG PYTHON_VERSION=3.9.9
# ビルド依存パッケージをインストール
RUN apk add wget gcc make zlib-dev libffi-dev openssl-dev musl-dev
# Pythonソースをダウンロードして展開
RUN cd /opt && \
wget https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz && \
tar xzf Python-${PYTHON_VERSION}.tgz
# Pythonをビルドしてインストール
RUN cd /opt/Python-${PYTHON_VERSION} && \
./configure --prefix=/usr --enable-optimizations --with-ensurepip=install && \
make install && \
rm /opt/Python-${PYTHON_VERSION}.tgz /opt/Python-${PYTHON_VERSION} -rf
公式Pythonイメージの利用
どうしてもAlpineベースイメージでPythonをインストールする必要がない場合は、公式のPython Alpineイメージを使用することを検討してください:
FROM python:3.11-alpine
この方法が最も簡単で、最新の状態を保つことができます。
トラブルシューティング
ensurepipの使用
何らかの理由で py3-pip
がインストールできない場合は、Pythonに組み込まれている ensurepip
を使用できます:
# Pythonをインストール
apk add python3
# pipをセットアップ
python3 -m ensurepip
オフライン環境でのインストール
オフライン環境では、必要なパッケージを事前にダウンロードしておきます:
# 必要なパッケージをフェッチ
apk fetch python3 py3-pip libbz2 libexpat libffi gdbm mpdecimal libpanelw readline sqlite-libs py3-setuptools libgcc libstdc++ py3-packaging py3-parsing
まとめ
Alpine LinuxにPythonをインストールする主な方法は:
- 標準インストール:
apk add python3 py3-pip
- コミュニティリポジトリの有効化を忘れずに
- Dockerでは
--no-cache
オプションでイメージ軽量化 - 特定バージョンにはセマンティックバージョニングを使用
- 問題がある場合は
ensurepip
や公式イメージの使用を検討
これらの方法を状況に応じて使い分けることで、Alpine Linux上で快適なPython開発環境を構築できます。