Nano Hash - криптовалюты, майнинг, программирование

Невозможно установить некоторые зависимости 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

Ниже снимок экрана:

введите описание изображения здесь

введите описание изображения здесь

26.12.2020


Ответы:


1

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, чтобы отключить кеширование.

26.12.2020
  • Это устранило мои проблемы, но мне пришлось устанавливать требования изнутри контейнера. Спасибо. 27.12.2020

  • 2

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

    apk add --update alpine-sdk
    

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

    Github: проблемы с docker alpine

    26.12.2020
  • Если вы используете alpine из-за его небольшого размера, установка этого метапакета лишит вас этой цели. 27.12.2020
  • Да ты прав. 27.12.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..