一部のrequirements.txtpython依存関係をインストールできません
要件.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
以下のスクリーンショット:
回答
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
を使用してキャッシュを無効にすることもできます。
解決策は、新しいパッケージの構築に使用される重要なパッケージを取り込む「メタパッケージ」であるalpine-SDKを更新することでした。」
apk add --update alpine-sdk
私はここで解決策を見つけました:
Github:DockerAlpineの問題