一部のrequirements.txtpython依存関係をインストールできません

Dec 27 2020

要件.txtからPythonの依存関係をインストールしても文句を言わない理由がわかりませんが、Dockerコンテナーからインストールすると、次のエラーメッセージが表示されます。

Requirements.txtの内容:

Flask~=1.1
grpcio
grpcio-tools
protobuf
iexfinance
numpy
pandas
pandas_datareader
pymongo

以下のようにコンテナを作成しました。

docker run -it -p 8080:50051 -v ${pwd}:/app -w "/app" python:3.8-alpine

このコマンドを使用して依存関係をインストールしようとしました:

pip install -r requirements.txt

以下のスクリーンショット:

回答

2 jakub Dec 27 2020 at 04:59

AlpineLinuxはmuslCを使用しますが、ほとんどのpythonホイールファイルはglib C用にコンパイルされます。したがって、C / C ++で記述された拡張子を持つパッケージをコンパイルする必要があります。コンパイラがインストールされていない場合、エラーが発生します。

パッケージがコンパイル時に必要とする可能性のあるコンパイラと依存関係をインストールする代わりに、Alpineに基づかないPythonDockerイメージを使用することをお勧めします。たとえば、python:3.8-slimまたはを使用できますpython:3.8。Linuxホイールを出荷するPythonパッケージをコンパイルする必要はありません。OPにリストされているすべてのパッケージは、requirements.txtを使用してpython:3.8-slimいる場合、コンパイル済みのホイールからインストールできます。

したがって、これらのコマンドを使用できます

docker run -it -p 8080:50051 -v ${pwd}:/app -w "/app" python:3.8-slim
pip install -r requirements.txt

結果の画像のサイズが気になる場合は、--no-cache-dirフラグpip installを使用してキャッシュを無効にすることもできます。

MselmiAli Dec 27 2020 at 05:00

解決策は、新しいパッケージの構築に使用される重要なパッケージを取り込む「メタパッケージ」であるalpine-SDKを更新することでした。」

apk add --update alpine-sdk

私はここで解決策を見つけました:

Github:DockerAlpineの問題