Я хочу создать контейнер docker python с scikit-learn, opencv и numpy. К сожалению, я не смог найти готовый контейнер, который содержал все это, но я нашел тот, который содержит numpy и scikit-learn.
https://hub.docker.com/r/frolvlad/alpine-python-machinelearning/
Мне все еще нужно было установить opencv, поэтому в моем файле докеров я включил RUN pip install opencv-python
. Однако я продолжаю получать ошибку ниже:
Could not find a version that satisfies the requirement opencv-python (from version: ) No matching distribution found for opencv-python
Каждая вещь, которую я читал в Интернете, говорит о том, что pip install opencv-python
будет работать, но по какой-то причине он не работает для меня. Может быть, это проблема с пакетом python?
Любая помощь приветствуется
Кроме того, я буду включать мой полный файл Docker ниже, я хочу использовать openFaas, который является безсерверной картой, поэтому мой файл Docker может выглядеть нечетным:
FROM frolvlad/alpine-python-machinelearning
RUN apk update
RUN apk upgrade
# Alternatively use ADD https:// (which will not be cached by Docker builder)
RUN apk --no-cache add curl \
&& echo "Pulling watchdog binary from Github." \
&& curl -sSL
https://github.com/openfaas/faas/releases/download/0.8.0/fwatchdog > /usr/bin/fwatchdog \
&& chmod +x /usr/bin/fwatchdog \
&& apk del curl --no-cache
# Add non root user
RUN addgroup -S app && adduser -S -g app app
RUN chown app /home/app
RUN pip install -U pip
USER app
ENV PATH=$PATH:/home/app/.local/bin
WORKDIR /home/app/
RUN pip install opencv-python
RUN mkdir -p function
RUN touch ./function/__init__.py
WORKDIR /home/app/function/
RUN pip install --user app opencv-python
WORKDIR /home/app/
COPY function function
ENV fprocess="python index.py"
HEALTHCHECK --interval=1s CMD [ -e /tmp/.lock ] || exit 1
CMD ["fwatchdog"]
Я просто столкнулся с этой проблемой. Оказывается, это не работает, потому что opencv-python
не имеет готовых колес для Alpine (дистрибутив, который вы используете в качестве своего базового изображения докеров).
Разговор в этом выпуске пакета opencv-python
объясняет, почему это происходит более подробно. TL: DR: если вам действительно нужно использовать Alpine, вы можете попытаться установить установку manylinux-колеса для opencv-python
, но это может сломаться. Ваш лучший вариант, если вам нужно сохранить Alpine, - это построить модуль из источника. Поскольку вы используете это на OpenFAAS, я подозреваю, что вы захотите сохранить свой размер на низком уровне, поэтому создание из источника может быть хорошим вариантом для вас.
Если вы не привязаны к Alpine, я бы предложил перейти к другому базовому образцу докеров. Если вы не знаете, какой образ использовать в качестве базы, я бы порекомендовал python:3.7-slim
, так как он будет установлен с уже установленным Python (замените 3.7
на ту версию, которую вы используете, но на самом деле... 3.7 хорошо), С помощью этого контейнера вы можете просто запустить pip install opencv-python numpy scipy
для установки всех трех ваших необходимых пакетов. Остальная часть вашего Dockerfile должна работать в основном немодифицированной; вам просто нужно будет установить/удалить curl
используя apt
вместо apk
.
На самом деле вам не следует устанавливать open-cv using pip, вам нужно установить с помощью пакета OpenCV. Если вы используете Windows:
а затем перейдите в папку /opencv/build/python/xxxx и скопируйте папку в папку \ Python\Pythonxxx\Lib\site-пакеты (xxx beeing с вашей версией Python)
И если вы находитесь в среде Linux, просто:
sudo apt-get install python-opencv
Кроме того, вы можете установить с помощью файла колес с открытого cv, который можно загрузить по адресу: https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv Выберите правильную версию, касающуюся вашей версии Python, а затем запустите
pip install "wheel_file_name.whl"
Чтобы проверить, все ли работает нормально, выполните:
import cv2 as cv
print(cv.__version__)
Если вы все сделали правильно, не печатайте никаких ошибок