Einige der Anforderungen.txt-Python-Abhängigkeiten können nicht installiert werden
Ich kann nicht herausfinden, warum ich mich bei der Installation meiner Python-Abhängigkeiten von require.txt pip nicht beschwere, aber wenn ich es vom Docker-Container aus mache, wird die folgende Fehlermeldung angezeigt:
Die Anforderungen.txt Inhalt:
Flask~=1.1
grpcio
grpcio-tools
protobuf
iexfinance
numpy
pandas
pandas_datareader
pymongo
Ich habe meinen Container wie folgt erstellt:
docker run -it -p 8080:50051 -v ${pwd}:/app -w "/app" python:3.8-alpine
Ich habe versucht, meine Abhängigkeiten mit diesem Befehl zu installieren:
pip install -r requirements.txt
Unten ein Screenshot:


Antworten
Alpine Linux verwendet musl C, aber die meisten Python Wheel-Dateien sind für glib C kompiliert. Daher müssen Pakete mit in C / C ++ geschriebenen Erweiterungen kompiliert werden. Wenn Sie keinen Compiler installiert haben, wird eine Fehlermeldung angezeigt.
Anstatt einen Compiler und Abhängigkeiten zu installieren, die Pakete zur Kompilierungszeit möglicherweise benötigen, empfehle ich die Verwendung eines Python Docker-Images, das nicht auf Alpine basiert. Beispielsweise können Sie python:3.8-slim
oder verwenden python:3.8
, und Python-Pakete, die Linux-Räder liefern, müssen nicht kompiliert werden. Alle in OPs aufgeführten Pakete requirements.txt
können bei Verwendung von vorkompilierten Rädern installiert werden python:3.8-slim
.
Sie können diese Befehle also verwenden
docker run -it -p 8080:50051 -v ${pwd}:/app -w "/app" python:3.8-slim
pip install -r requirements.txt
Wenn Sie über die Größe des resultierenden Bildes betroffen sind, können Sie auch die Verwendung --no-cache-dir
Flag in pip install
zu deaktivieren Caching.
Die Lösung bestand darin, das alpine SDK zu aktualisieren, bei dem es sich um ein "Metapaket" handelt, das die wesentlichen Pakete enthält, die zum Erstellen neuer Pakete verwendet werden. "
apk add --update alpine-sdk
Ich habe hier die Lösung gefunden:
Github: Docker Alpenprobleme