Saltar al contenido

No puedo instalar opencv-contrib-python en la ventana acoplable

Solución:

Supongo que estás viendo la falla en el -alpine versión porque el opencv El paquete es una distribución binaria (no es solo código Python) y probablemente no se haya creado para Alpine. Alpine usa una biblioteca C que es diferente de todo lo demás (Alpine usa MUSL libc mientras que casi todo lo demás usa Glibc); Existe la posibilidad de que el código base de opencv ni siquiera se compile para MUSL. O tal vez es solo que nadie ha llegado a construir un paquete binario. En cualquier caso, es mejor que tenga una de las siguientes opciones:

Si uso la imagen de python: 3.5 (no la de Alpine), simplemente funciona:

$ docker run -it --rm python:3.5 bash
[email protected]:/# pip install opencv-contrib-python-headless
Collecting opencv-contrib-python-headless
  Downloading https://files.pythonhosted.org/packages/c2/50/2427b286652cf64ea3618d08bfba38c04b6571f6f2c054e950367a2f309f/opencv_contrib_python_headless-3.4.3.18-cp35-cp35m-manylinux1_x86_64.whl (24.0MB)
    100% |████████████████████████████████| 24.1MB 2.4MB/s
Collecting numpy>=1.11.1 (from opencv-contrib-python-headless)
  Downloading https://files.pythonhosted.org/packages/86/04/bd774106ae0ae1ada68c67efe89f1a16b2aa373cc2db15d974002a9f136d/numpy-1.15.4-cp35-cp35m-manylinux1_x86_64.whl (13.8MB)
    100% |████████████████████████████████| 13.8MB 4.7MB/s
Installing collected packages: numpy, opencv-contrib-python-headless
Successfully installed numpy-1.15.4 opencv-contrib-python-headless-3.4.3.18
[email protected]:/# python
Python 3.5.6 (default, Nov 16 2018, 22:45:03)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>>

Si uso el 3.5-slim etiqueta, veo el mismo error que informó:

[email protected]:/# python
Python 3.5.5 (default, May  5 2018, 03:17:29)
[GCC 4.9.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.5/site-packages/cv2/__init__.py", line 3, in <module>
    from .cv2 import *
ImportError: libgthread-2.0.so.0: cannot open shared object file: No such file or directory
>>>

Como podemos ver en una consulta de paquete, esa biblioteca es propiedad del libglib2.0-0 paquete, que aparentemente no está instalado por defecto en el -slim versión de la imagen de Python. Podemos arreglarlo:

# apt-get update
# apt-get -y install libglib2.0-0

Y ahora funciona como se esperaba:

[email protected]:/# python
Python 3.5.5 (default, May  5 2018, 03:17:29)
[GCC 4.9.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>>

Puede crear su propia imagen incorporando esta corrección utilizando un
Dockerfile igual que:

FROM python:3.5-slim
RUN apt-get update && apt-get -y install libglib2.0-0; apt-get clean
RUN pip install opencv-contrib-python-headless

Actualizar

Con respecto a su comentario: si desea que un paquete esté disponible para el código que se ejecuta en su contenedor, entonces sí, debe instalarlo. ¿De dónde más vendrá?

Si opencv-contrib-python-headless está incluido en tu
requirements.txt, entonces lo que se ha publicado en los comentarios debería funcionar bien:

FROM python:3.5
COPY . /app
WORKDIR /app
RUN pip3 install -r requirements.txt
ENTRYPOINT ["python3"]
CMD ["app.py"]

Si tu requirements.txt no incluye esto (¿por qué no?), Debería instalarlo explícitamente:

FROM python:3.5
RUN pip install opencv-contrib-python-headless
COPY . /app
WORKDIR /app
RUN pip3 install -r requirements.txt
ENTRYPOINT ["python3"]
CMD ["app.py"]

Tuve el mismo problema. Estaba usando python-slim. Ocurre debido a dependencias del tiempo de ejecución. Agregue el siguiente fragmento de código en su DockerFile para instalar dependencias de tiempo de ejecución.

Instale las dependencias en tiempo de ejecución de OpenCV

EJECUTAR apt-get update EJECUTAR apt-get -y install libglib2.0-0 EJECUTAR apt-get -y install libsm6 libxrender-dev libxext6

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *