我无法在d中安装opencvcontribpython

2024-09-29 23:21:17 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我试过了

pip install opencv-contrib-python-headless

然后,我累了 https://github.com/cassiobotaro/docker-opencv-contrib/blob/master/Dockerfile 我也试过了

^{pr2}$

但我两个都没法用。请让我知道,我如何才能安装在docker只需需求文件以上?在

更多参考资料(我尝试过的): Unable to install/run docker with opencv

以及

from .cv2 import * ImportError: libgthread-2.0.so.0: cannot open shared object file: No such file or directory


Tags: installpipdockerhttpsdockerfile版本githubmaster
1条回答
网友
1楼 · 发布于 2024-09-29 23:21:17

我的猜测是您看到了-alpine版本的失败,因为opencv包是一个二进制分布(它不仅仅是Python代码),而且它可能不是为Alpine构建的。Alpine使用的C库与其他任何东西都不同(Alpine使用的是musllibc,而其他任何东西都使用Glibc);opencv代码库甚至可能不会为MUSL构建。或者可能是因为没有人有时间构建二进制包。无论哪种情况,最好选择以下选项之一:

如果我用股票python:3.5图像(不是阿尔卑斯山的)它只是起作用:

$ 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标记,我会看到您报告的相同错误:

^{pr2}$

正如我们从package query中看到的那样,该库属于libglib2.0包,显然在-slim版本的Python映像中没有默认安装该包。我们可以解决这个问题:

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

现在它按预期运行:

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

相关问题 更多 >

    热门问题