Skip to content

Alpine Linux への Python インストール

Alpine Linux は軽量なLinuxディストリビューションとして人気があり、Dockerコンテナ環境でよく使用されます。しかし、Pythonのインストール方法が一般的なディストリビューションとは異なるため、初心者は戸惑うことがあります。この記事では、Alpine LinuxにPythonとpipを正しくインストールする方法を解説します。

問題点

Alpine Linuxで以下のコマンドを実行するとエラーが発生します:

bash
$ 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 ではなく python3python3-pip ではなく py3-pip となっているためです。

基本的な解決方法

1. 標準的なインストール方法

最もシンプルで推奨される方法は以下のコマンドです:

bash
apk add python3 py3-pip

TIP

--no-cache オプションを追加すると、キャッシュを残さないのでDockerイメージを軽量化できます:

bash
apk add --no-cache python3 py3-pip

2. コミュニティリポジトリの有効化

py3-pip パッケージはコミュニティリポジトリに含まれているため、リポジトリが有効になっていることを確認してください:

bash
# リポジトリ設定ファイルを確認
cat /etc/apk/repositories

# コミュニティリポジトリが無効になっている場合(先頭に#がある)、有効化する
sed -i 's/^#.*\/community/\/community/' /etc/apk/repositories

# パッケージリストを更新
apk update

# 再度インストールを試みる
apk add python3 py3-pip

特定のバージョンをインストールする方法

特定のPythonバージョンをインストールしたい場合は、セマンティックバージョニングを使用します:

bash
# 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環境を構築する場合は以下のように記述します:

dockerfile
# 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をビルドする方法もあります:

dockerfile
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イメージを使用することを検討してください:

dockerfile
FROM python:3.11-alpine

この方法が最も簡単で、最新の状態を保つことができます。

トラブルシューティング

ensurepipの使用

何らかの理由で py3-pip がインストールできない場合は、Pythonに組み込まれている ensurepip を使用できます:

bash
# Pythonをインストール
apk add python3

# pipをセットアップ
python3 -m ensurepip

オフライン環境でのインストール

オフライン環境では、必要なパッケージを事前にダウンロードしておきます:

bash
# 必要なパッケージをフェッチ
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をインストールする主な方法は:

  1. 標準インストール: apk add python3 py3-pip
  2. コミュニティリポジトリの有効化を忘れずに
  3. Dockerでは --no-cache オプションでイメージ軽量化
  4. 特定バージョンにはセマンティックバージョニングを使用
  5. 問題がある場合は ensurepip や公式イメージの使用を検討

これらの方法を状況に応じて使い分けることで、Alpine Linux上で快適なPython開発環境を構築できます。