I'm attempting to Dockerise a Python application, which depends on OpenCV. I've tried several different ways, but I keep getting... ImportError: No module named cv2
when I attempt to run the application.
Here's my current Dockerfile.
FROM python:2.7 MAINTAINER Ewan Valentine <[email protected]> RUN mkdir -p /usr/src/app WORKDIR /usr/src/app # Various Python and C/build deps RUN apt-get update && apt-get install -y \ wget \ build-essential \ cmake \ git \ pkg-config \ python-dev \ python-opencv \ libopencv-dev \ libav-tools \ libjpeg-dev \ libpng-dev \ libtiff-dev \ libjasper-dev \ libgtk2.0-dev \ python-numpy \ python-pycurl \ libatlas-base-dev \ gfortran \ webp \ python-opencv # Install Open CV - Warning, this takes absolutely forever RUN cd ~ && git clone https://github.com/Itseez/opencv.git && \ cd opencv && \ git checkout 3.0.0 && \ cd ~ && git clone https://github.com/Itseez/opencv_contrib.git && \ cd opencv_contrib && \ git checkout 3.0.0 && \ cd ~/opencv && mkdir -p build && cd build && \ cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_C_EXAMPLES=ON \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \ -D BUILD_EXAMPLES=OFF .. && \ make -j4 && \ make install && \ ldconfig COPY requirements.txt /usr/src/app/ RUN pip install --no-cache-dir -r requirements.txt COPY . /usr/src/app
And my requirements.txt file
Flask==0.8 gunicorn==0.14.2 requests==0.11.1 bs4==0.0.1 nltk==3.2.1 pymysql==0.7.2 xlsxwriter==0.8.5 numpy==1.11 Pillow==3.2.0 cv2==1.0 pytesseract==0.1
By default OpenCV will be installed to the /usr/local directory, all files will be copied to following locations: /usr/local/bin - executable files.
OpenCV can be installed using pip. The following command is run in the command prompt to install OpenCV. This command will start downloading and installing packages related to the OpenCV library. Once done, the message of successful installation will be displayed.
cv2 (old interface in old OpenCV versions was named as cv ) is the name that OpenCV developers chose when they created the binding generators. This is kept as the import name to be consistent with different kind of tutorials around the internet.
Fixed with a slightly different set-up
FROM python:2.7 MAINTAINER Ewan Valentine <[email protected]> RUN mkdir -p /usr/src/app WORKDIR /usr/src/app # Various Python and C/build deps RUN apt-get update && apt-get install -y \ wget \ build-essential \ cmake \ git \ unzip \ pkg-config \ python-dev \ python-opencv \ libopencv-dev \ libav-tools \ libjpeg-dev \ libpng-dev \ libtiff-dev \ libjasper-dev \ libgtk2.0-dev \ python-numpy \ python-pycurl \ libatlas-base-dev \ gfortran \ webp \ python-opencv \ qt5-default \ libvtk6-dev \ zlib1g-dev # Install Open CV - Warning, this takes absolutely forever RUN mkdir -p ~/opencv cd ~/opencv && \ wget https://github.com/opencv/opencv/archive/3.0.0.zip && \ unzip 3.0.0.zip && \ rm 3.0.0.zip && \ mv opencv-3.0.0 OpenCV && \ cd OpenCV && \ mkdir build && \ cd build && \ cmake \ -DWITH_QT=ON \ -DWITH_OPENGL=ON \ -DFORCE_VTK=ON \ -DWITH_TBB=ON \ -DWITH_GDAL=ON \ -DWITH_XINE=ON \ -DBUILD_EXAMPLES=ON .. && \ make -j4 && \ make install && \ ldconfig COPY requirements.txt /usr/src/app/ RUN pip install --no-cache-dir -r requirements.txt COPY . /usr/src/app
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With