Impossible d'installer certaines des dépendances python requirements.txt

Dec 27 2020

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

2 jakub Dec 27 2020 at 04:59

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-slimou 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.txtpeuvent ê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-dirindicateur pip installpour désactiver la mise en cache.

MselmiAli Dec 27 2020 at 05:00

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