【问题标题】:Python docker image doesn't find opencv when installed with apt-get使用 apt-get 安装时,Python docker 映像找不到 opencv
【发布时间】:2020-03-07 05:21:47
【问题描述】:

我的 Dockerfile:

FROM python:3.7

RUN apt-get update && apt-get install -y python3-opencv

构建这个然后得到以下结果:

$ docker run -it myimage:opencv python3 -c "import cv2"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'cv2'

$ docker run -it hazopticnano:opencv python3 -c "import sys; print(sys.path)"
['', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']

容器内:

$ ls usr/lib/python3/dist-packages/
cv2.cpython-37m-x86_64-linux-gnu.so  numpy  numpy-1.16.2.egg-info  pkg_resources

如果我运行它,那么它将起作用:

$ ln -s /usr/lib/python3/dist-packages/* /usr/local/lib/python3.7/dist-packages/

有没有一种方法可以“开箱即用”地完成这项工作,而无需运行最后一个命令?

【问题讨论】:

  • 为什么不用 pip install 代替?
  • 图中的python 3.7不是系统解释器。 apt 将只为系统解释器安装。
  • 因为我想让它在 x86 和 ARM 处理器上工作。

标签: python linux docker debian apt-get


【解决方案1】:

正如@klaus-d 所说,python 是从源代码安装的,而不是通过包管理器安装的。见https://github.com/docker-library/python/blob/master/3.7/buster/Dockerfile

您可以选择使用 pip(在不同的架构上应该可以正常工作)或使用 debian 映像并通过 apt 安装 python。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多