はじめに
Dockerを使って環境構築を行っていたところ、pip3 install -r requirements.txt
でエラーが出てしまったので、その解決方法を備忘録として残します。
環境
Python 3.8.10
pip 23.2.1 from /usr/local/lib/python3.8/dist-packages/pip (python 3.8)
エラーコード
Failed to build backports.zoneinfo
ERROR: Could not build wheels for backports.zoneinfo, which is required to install pyproject.toml-based projects
failed to solve: executor failed running [/bin/sh -c pip3 install -r requirements.txt]: exit code: 1
調べた記事によると、backports.zoneinfoモジュールはPython3.9以上のバージョンはサポートしていないためエラーが発生するそうですが、私の環境はPython3.8.10だったのでこの方法では解決できず、、、。
解決方法
結論から先に伝えますとbuild-essential
というメタパッケージがインストールされていなかったため、エラーが出ていました。
ですので、build_essential
をインストールすることで解決しました。
apt-get install build-essential
Dockerfile
僕の環境の場合は、以下のように記述することで解決しました。
FROM ubuntu:20.04
(省略)
# apt-get
RUN apt-get update && \
apt-get install -y --no-install-recommends \
# ↓を追加
build-essential \
curl \
git \
python3 \
python3-pip \
wget \
(省略)
build-essentialってなんなの?
build-essentialは、DebianベースのUbuntuなどにおいて、ソフトウェアをビルドするために必要なパッケージを集めたメタパッケージです。
このパッケージには、以下の主要なパッケージが含まれています。
- GNU デバッガー
- GNU コンパイラ
- make(プロジェクトのビルド自動化ツール)
簡単にまとめると、build-essentialはソースコードからプログラムやライブラリをコンパイルする基本的なツールを提供しており、Debianパッケージの構築に必須とされるパッケージが含まれています。
今回は、Debianパッケージの構築に必須のパッケージが入っていなかったため、エラーが出ていました。
終わりに
Debianベース(Ubuntu)の環境構築を行う際は、build-essentialのインストールを忘れないように!