Не удается установить некоторые зависимости python requirements.txt

Dec 27 2020

Я не могу понять, почему при установке моих зависимостей python из requirements.txt pip не жалуется, но когда я делаю это из контейнера докеров, я получил следующее сообщение об ошибке:

Содержимое файла requirements.txt:

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

Я создал свой контейнер, как показано ниже:

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

Я пытался установить свои зависимости с помощью этой команды:

pip install -r requirements.txt

Ниже приведен скриншот:

Ответы

2 jakub Dec 27 2020 at 04:59

Alpine Linux использует musl C, но большинство файлов python wheel скомпилированы для glib C. Следовательно, пакеты с расширениями, написанными на C / C ++, должны быть скомпилированы. Если у вас не установлен компилятор, вы получите сообщение об ошибке.

Вместо установки компилятора и зависимостей, которые могут потребоваться пакетам во время компиляции, я предлагаю использовать образ Docker для python, не основанный на Alpine. Например, вы можете использовать python:3.8-slimили python:3.8, и пакеты python, которые поставляются с колесами Linux, не должны компилироваться. Все пакеты, перечисленные в OP, requirements.txtмогут быть установлены с предварительно скомпилированных колес при использовании python:3.8-slim.

Итак, вы можете использовать эти команды

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

Если вас беспокоит размер результирующего изображения, вы также можете использовать --no-cache-dirфлаг pip installдля отключения кеширования.

MselmiAli Dec 27 2020 at 05:00

Решение заключалось в обновлении alpine-SDK, который представляет собой «метапакет», в который входят основные пакеты, используемые для создания новых пакетов ».

apk add --update alpine-sdk

Я нашел решение здесь:

Github: проблемы с докером