Não é possível instalar algumas das dependências de Python de requirements.txt

Dec 27 2020

Não consigo descobrir por que não reclamo ao instalar minhas dependências python do pip do requirements.txt, mas quando faço isso do contêiner do docker, recebo a seguinte mensagem de erro:

O conteúdo de requirements.txt:

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

Criei meu contêiner como a seguir:

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

Tentei instalar minhas dependências usando este comando:

pip install -r requirements.txt

Abaixo algumas imagens:

Respostas

2 jakub Dec 27 2020 at 04:59

Alpine Linux usa musl C, mas a maioria dos arquivos python wheel são compilados para glib C. Portanto, os pacotes que possuem extensões escritas em C / C ++ precisam ser compilados. Se você não tiver um compilador instalado, receberá um erro.

Em vez de instalar um compilador e dependências que os pacotes podem exigir no momento da compilação, sugiro usar uma imagem Docker python que não seja baseada no Alpine. Por exemplo, você pode usar python:3.8-slimou python:3.8, e os pacotes python que vêm com o Linux wheels não precisam ser compilados. Todos os pacotes listados em OPs requirements.txtpodem ser instalados a partir de rodas pré-compiladas se usar python:3.8-slim.

Então você pode usar esses comandos

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

Se estiver preocupado com o tamanho da imagem resultante, você também pode usar o --no-cache-dirsinalizador em pip installpara desativar o armazenamento em cache.

MselmiAli Dec 27 2020 at 05:00

A solução foi atualizar o alpine-SDK, que é um "meta-pacote" que puxa os pacotes essenciais usados ​​para construir novos pacotes. "

apk add --update alpine-sdk

Encontrei a solução aqui:

Github: Docker Alpine Issues