Pip/pipenv не находит пакет внутри контейнера Docker?

Я пытаюсь использовать шпион в своем приложении Python, разработка и развертывание которого в основном происходит в контейнере Docker, а именно питон: 3.7-альпийский. Когда я запускаю pip install py-spy локально в virtualenv, это удается. Кроме того, у pypi есть список для этого.

Как ни странно, когда я включаю его в свой Pipfile, pipenv install не может найти его в контейнере Docker и терпит неудачу при попытке сборки. Но он правильно находит и устанавливает другое содержимое Pipenv.

Dockerfile выглядит так:

FROM python:3.7-alpine3.8
RUN mkdir -p /opt/app
WORKDIR /opt/app
RUN set -ex \
    && apk add libpq shadow \
    && apk add --no-cache --virtual .build-deps \
            gcc \
            git \
            bash \
            tmux \
            make \
            libcurl \
            curl-dev \
            libc-dev \
            musl-dev \
            linux-headers \
            pcre-dev \
            postgresql-dev \
            postgresql-libs \
            libffi-dev \
            ncurses-dev \
            python3-dev

RUN pip install pipenv
COPY Pipfile Pipfile.lock ./
RUN pipenv install --system --deploy --dev

# This is where we fail

Без py-spy все строится. С py-spy = "*", запуская pipenv lock && docker-compose build, получаем

An error occurred while installing py-spy==0.2.0.dev1 --hash=sha256:27f318826cb99a3cc4a089d8991e08ba8c86743ed9191799f39bc02cf1964a05 --hash=sha256:9e3d3f199c360dee58dbc9ce82e4dd9cb5ae3356466b25a8276bb972fdced2d9 --hash=sha256:c7c07b1557f372701ca3096582d487a19dd5ee7d0143c2c8dd3bdb0ec37c9450! Will try again.
Installing initially failed dependencies…
[pipenv.exceptions.InstallError]:   File "/usr/local/lib/python3.7/site-packages/pipenv/core.py", line 1874, in do_install
[pipenv.exceptions.InstallError]:       keep_outdated=keep_outdated
[pipenv.exceptions.InstallError]:   File "/usr/local/lib/python3.7/site-packages/pipenv/core.py", line 1253, in do_init
[pipenv.exceptions.InstallError]:       pypi_mirror=pypi_mirror,
[pipenv.exceptions.InstallError]:   File "/usr/local/lib/python3.7/site-packages/pipenv/core.py", line 859, in do_install_dependencies
[pipenv.exceptions.InstallError]:       retry_list, procs, failed_deps_queue, requirements_dir, **install_kwargs
[pipenv.exceptions.InstallError]:   File "/usr/local/lib/python3.7/site-packages/pipenv/core.py", line 763, in batch_install
[pipenv.exceptions.InstallError]:       _cleanup_procs(procs, not blocking, failed_deps_queue, retry=retry)
[pipenv.exceptions.InstallError]:   File "/usr/local/lib/python3.7/site-packages/pipenv/core.py", line 681, in _cleanup_procs
[pipenv.exceptions.InstallError]:       raise exceptions.InstallError(c.dep.name, extra=err_lines)
[pipenv.exceptions.InstallError]: ['Collecting py-spy==0.2.0.dev1 (from -r /tmp/pipenv-jxl1heir-requirements/pipenv-8_kalqyx-requirement.txt (line 1))']
[pipenv.exceptions.InstallError]: ['ERROR: Could not find a version that satisfies the requirement py-spy==0.2.0.dev1 (from -r /tmp/pipenv-jxl1heir-requirements/pipenv-8_kalqyx-requirement.txt (line 1)) (from versions: none)', 'ERROR: No matching distribution found for py-spy==0.2.0.dev1 (from -r /tmp/pipenv-jxl1heir-requirements/pipenv-8_kalqyx-requirement.txt (line 1))']
ERROR: ERROR: Package installation failed...

Это звонит в колокола? py-spy имеет зависимости от Rust, есть ли способ проверить, является ли он «невидимым» для некоторых архитектур?

Если возможно, вы можете предоставить полный dockerfile

mchawre 02.07.2019 19:38

хороший звонок, добавил! Также добавлена ​​навигационная цепочка для py-spy наличия зависимостей от Rust (возможно, автор каким-то образом указал «сделать меня невидимым для архитектур, которых нет в [списке]»

pablo.meier 02.07.2019 20:13
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
2
2
857
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это было это:

Alpine python opts out of the manylinux wheels: pypa/pip#3969 (comment). Before installing py-spy on Alpine docker containers do:

echo 'manylinux1_compatible = True' > /usr/local/lib/python3.7/site-packages/_manylinux.py

Другие вопросы по теме