Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
I';m无法在docker中安装opencv contrib python_Python_Docker_Opencv - Fatal编程技术网

I';m无法在docker中安装opencv contrib python

I';m无法在docker中安装opencv contrib python,python,docker,opencv,Python,Docker,Opencv,我尝试安装opencv contrib python,但无法在docker上运行。它说,找不到满足opencv contrib python要求的版本 我试过了 pip install opencv-contrib-python-headless 然后,我累了 我也试过 FROM python:3.5-alpine COPY . /app WORKDIR /app RUN apk add --no-cache ca-certificates RUN

我尝试安装opencv contrib python,但无法在docker上运行。它说,找不到满足opencv contrib python要求的版本

我试过了

pip install opencv-contrib-python-headless
然后,我累了 我也试过

    FROM python:3.5-alpine

    COPY . /app
    WORKDIR /app


    RUN apk add --no-cache ca-certificates
    RUN apk add --no-cache git build-base musl-dev alpine-sdk cmake clang clang-dev make gcc g++ libc-dev linux-headers

    RUN mkdir /tmp/opencv
    WORKDIR /tmp/opencv
    RUN wget -O opencv.zip https://github.com/opencv/opencv/archive/3.4.1.zip
    RUN unzip opencv.zip
    RUN wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/3.4.1.zip
    RUN unzip opencv_contrib.zip
    RUN mkdir /tmp/opencv/opencv-3.4.1/build

    WORKDIR /tmp/opencv/opencv-3.4.1/build
    RUN cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/tmp/opencv/opencv_contrib-3.4.1/modules -D BUILD_DOCS=OFF BUILD_EXAMPLES=OFF -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_opencv_java=OFF -D BUILD_opencv_python=OFF -D BUILD_opencv_python2=OFF -D BUILD_opencv_python3=OFF ..
    RUN make -j4
    RUN make install

    RUN rm -rf /tmp/opencv


    RUN pip3 install -r requirements.txt

CMD ["app.py"] 
但我两个都不能用。请让我知道如何在docker中仅通过需求文件安装上述内容

更多参考资料(我尝试过的内容):


我猜您在
-alpine
版本上看到了失败,因为
opencv
包是一个二进制发行版(不仅仅是Python代码),而且它可能不是为alpine构建的。Alpine使用的C库与其他库不同(Alpine使用MUSL libc,而其他库几乎都使用Glibc);opencv代码库甚至可能不会为MUSL构建。或者可能只是因为没有人能够构建二进制软件包。无论哪种情况,您最好选择以下选项之一:

如果我使用股票python:3.5图像(不是Alpine图像),它只会工作:

$ docker run -it --rm python:3.5 bash
root@95c81040aeaf:/# 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
root@95c81040aeaf:/# 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
>>>
如果我使用
3.5-slim
标记,我会看到您报告的相同错误:

root@63dca11a527f:/# 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
>>>
现在它按预期运行:

root@63dca11a527f:/# 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
>>>
您可以使用
Dockerfile
类似:

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
更新

关于您的评论:如果您希望代码可以使用包 在你的容器中运行,是的,你必须安装它。哪里 否则它会从哪里来

如果
opencv contrib python headless
包含在
requirements.txt
,那么在评论中发布的内容应该有效 很好:

FROM python:3.5
COPY . /app
WORKDIR /app
RUN pip3 install -r requirements.txt
ENTRYPOINT ["python3"]
CMD ["app.py"]
如果您
requirements.txt
没有包含这个(为什么不?),您会 需要显式安装它:

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"]

我也有同样的问题。我使用的是python slim。它是由于运行时依赖关系而发生的。在DockerFile中添加以下代码段以安装运行时依赖项

安装OpenCV的运行时依赖项
运行apt-get-update运行apt-get-y安装libglib2.0-0运行apt-get-y安装libsm6\libxrender dev\libxext6

在搜索该错误时,您是否尝试过谷歌建议的任何解决方案?我得到不少关于阿尔卑斯山上的人的点击,他们都犯了这个错误。也就是说,在您的定制映像(不是github映像)中,您使用的是哪个基础映像?我一直在使用python 3.6-slim和3.5-slim,没有任何问题。另外,github映像出了什么问题?@C.Nivs Hi Nivs。我尝试了3.5-slim,它已经安装了库,但在运行docker时出现了任何错误。错误:ImportError:libgthread-2.0.so.0:无法打开共享对象文件:没有此类文件或directory@C.Nivs当我运行github docker image:@C.Nivs E:无法通过命令“/bin/sh-C apt get update&&apt get install-y build sential cmake wget git unzip yasm pkg config”找到libjasper dev包时,我遇到了这个错误libjpeg dev libtiff dev libjasper dev libpng dev libavcodec dev libavformat dev libswscale dev libv4l dev libatlas base dev gfortran libtbb2 libtbb dev libpq dev&&apt get-y clean all&&rm-rf/var/lib/apt/lists/*'返回一个非零代码:100I显示了我在这里运行的每个命令这就是答案。你想要什么代码?抱歉,百灵鸟,但我对docker很陌生,我正在尝试dockerfile中的不同变体来让这个模块工作,但它总是崩溃。我的docker文件中的当前代码如下所示:FROM python:3.5 COPY/app WORKDIR/app RUN pip3 install-r requirements.txt ENTRYPOINT[“python3”]CMD[“app.py”]我需要在同一个映像上安装opencv命令吗?抱歉,我完全不知道!我想你可能想在这个问题上提出一个新问题;这里的评论并不是进行广泛的非主题讨论的地方。您可能希望包括
app.py
中负责启动服务的任何代码。
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"]