Не удается установить некоторые зависимости python requirements.txt
Я не могу понять, почему при установке моих зависимостей 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
Ниже приведен скриншот:


Ответы
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
для отключения кеширования.
Решение заключалось в обновлении alpine-SDK, который представляет собой «метапакет», в который входят основные пакеты, используемые для создания новых пакетов ».
apk add --update alpine-sdk
Я нашел решение здесь:
Github: проблемы с докером