Impossible d'installer certaines des dépendances python requirements.txt
Je ne peux pas comprendre pourquoi lors de l'installation de mes dépendances python à partir de requirements.txt pip ne me plains pas, mais lorsque je le fais à partir du conteneur docker, j'ai le message d'erreur suivant:
Le contenu requirements.txt:
Flask~=1.1
grpcio
grpcio-tools
protobuf
iexfinance
numpy
pandas
pandas_datareader
pymongo
J'ai créé mon conteneur comme ci-dessous:
docker run -it -p 8080:50051 -v ${pwd}:/app -w "/app" python:3.8-alpine
J'ai essayé d'installer mes dépendances en utilisant cette commande:
pip install -r requirements.txt
Ci-dessous une capture d'écran:


Réponses
Alpine Linux utilise musl C, mais la plupart des fichiers de roues python sont compilés pour glib C. Par conséquent, les paquets qui ont des extensions écrites en C / C ++ doivent être compilés. Si vous n'avez pas de compilateur installé, vous obtiendrez une erreur.
Au lieu d'installer un compilateur et les dépendances que les packages peuvent nécessiter au moment de la compilation, je suggère d'utiliser une image Docker python qui n'est pas basée sur Alpine. Par exemple, vous pouvez utiliser python:3.8-slim
ou python:3.8
, et les packages python qui livrent des roues Linux n'auront pas à être compilés. Tous les packages répertoriés dans les OP requirements.txt
peuvent être installés à partir de roues pré-compilées si vous utilisez python:3.8-slim
.
Vous pouvez donc utiliser ces commandes
docker run -it -p 8080:50051 -v ${pwd}:/app -w "/app" python:3.8-slim
pip install -r requirements.txt
Si vous êtes préoccupé par la taille de l'image résultante, vous pouvez également utiliser l' --no-cache-dir
indicateur pip install
pour désactiver la mise en cache.
La solution consistait à mettre à jour alpine-SDK, qui est un "méta-package" qui extrait les packages essentiels utilisés pour créer de nouveaux packages. "
apk add --update alpine-sdk
J'ai trouvé la solution ici:
Github: problèmes de docker alpin