我正在尝试Dockerise 一个依赖于OpenCV的Python应用程序。我已经尝试了几种不同的方法,但我不断得到...导入错误:当我尝试运行应用程序时,没有名为 cv2 的模块
。
这是我当前的 Dockerfile。
FROM python:2.7
MAINTAINER Ewan Valentine <ewan@theladbible.com>
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
还有我的requirements.txt档案
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
使用稍微不同的设置进行修复
FROM python:2.7
MAINTAINER Ewan Valentine <ewan@theladbible.com>
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
感谢您发布此消息。我遇到了同样的问题,并尝试了您的解决方案,虽然它似乎安装了OpenCV,但它给我留下了Python六库版本冲突的问题,所以我采取了不同的路线。我认为更简单的方法是在容器中安装Anaconda,然后添加OpenCV。我使用的是Python 2,所以我安装OpenCvv的整个Dockerfile就是:
FROM continuumio/anaconda
EXPOSE 5000
ADD . /code-directory
WORKDIR code-directory
RUN conda install opencv
CMD ["python", "run-code.py"]
这将从continuum io/anaconda docker文件安装Anaconda,然后使用Anaconda安装opencv。如果你也需要的话,Python 3有一个单独的continuumio Dockerfile文件。
这是一张基于Ubuntu 16.04和Python2Python3OpenCV构建的图片。您可以使用docker pull chennavarri/ubuntuopencv_python来拉动它
这是Dockerfile(在上面提到的同一个dockerhub存储库中提供),它将在Ubuntu 16.04上为python2和python3安装opencv,并设置适当的raw1394链接。复制自 https://github.com/chennavarri/docker-ubuntu-python-opencv
FROM ubuntu:16.04
MAINTAINER Chenna Varri
RUN apt-get update
RUN apt-get install -y build-essential apt-utils
RUN apt-get install -y cmake git libgtk2.0-dev pkg-config libavcodec-dev \
libavformat-dev libswscale-dev
RUN apt-get update && apt-get install -y python-dev python-numpy \
python3 python3-pip python3-dev libtbb2 libtbb-dev \
libjpeg-dev libjasper-dev libdc1394-22-dev \
python-opencv libopencv-dev libav-tools python-pycurl \
libatlas-base-dev gfortran webp qt5-default libvtk6-dev zlib1g-dev
RUN pip3 install numpy
RUN apt-get install -y python-pip
RUN pip install --upgrade pip
RUN cd ~/ &&\
git clone https://github.com/Itseez/opencv.git &&\
git clone https://github.com/Itseez/opencv_contrib.git &&\
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
# Set the appropriate link
RUN ln /dev/null /dev/raw1394
RUN cd ~/opencv
给刚开始使用 Docker 的人的一些附加说明:
>
在放置此 Dockerfile 的目录中,将 docker 镜像构建为 docker build -t ubuntu_cv 。
构建图像后,您可以通过执行<code>docker images</code>进行检查
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu_cv latest 6210ddd6346b 24 minutes ago 2.192 GB
您可以将docker容器命名为< code > docker run-t-I Ubuntu _ cv:latest