No se pueden instalar algunas de las dependencias de python de requirements.txt

Dec 27 2020

No puedo entender por qué al instalar mis dependencias de python desde requirements.txt pip no me quejo, pero cuando lo hago desde el contenedor de la ventana acoplable, recibí el siguiente mensaje de error:

El contenido de requirements.txt:

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

He creado mi contenedor como a continuación:

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

Intenté instalar mis dependencias usando este comando:

pip install -r requirements.txt

A continuación, algunas capturas de pantalla:

Respuestas

2 jakub Dec 27 2020 at 04:59

Alpine Linux usa musl C, pero la mayoría de los archivos de rueda de Python se compilan para glib C. Por lo tanto, los paquetes que tienen extensiones escritas en C / C ++ deben compilarse. Si no tiene un compilador instalado, obtendrá un error.

En lugar de instalar un compilador y las dependencias que los paquetes pueden requerir en el momento de la compilación, sugiero usar una imagen de Python Docker que no esté basada en Alpine. Por ejemplo, puede usar python:3.8-slimo python:3.8, y los paquetes de Python que incluyen ruedas de Linux no tendrán que compilarse. Todos los paquetes enumerados en OP requirements.txtse pueden instalar desde ruedas precompiladas si se usan python:3.8-slim.

Entonces puedes usar estos comandos

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

Si le preocupa el tamaño de la imagen resultante, también puede usar la --no-cache-dirmarca pip installpara deshabilitar el almacenamiento en caché.

MselmiAli Dec 27 2020 at 05:00

La solución fue actualizar alpine-SDK, que es un "metapaquete" que incluye los paquetes esenciales que se utilizan para crear nuevos paquetes ".

apk add --update alpine-sdk

Encontré la solución aquí:

Github: problemas de docker alpine