Não é possível instalar algumas das dependências de Python de requirements.txt
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
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-slim
ou 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.txt
podem 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-dir
sinalizador em pip install
para desativar o armazenamento em cache.
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