如何在 Alpine 上安装 matplotlib

2023-12-03

尝试在 alpine docker 映像上安装 matplotlib。我收到一堆丑陋的消息。我是否缺少一些需要手动安装的额外先决条件?

这是泊坞窗文件:

    FROM openjdk:8-jre-alpine
    RUN apk update
    RUN apk add --no-cache tesseract-ocr
    RUN echo     import numpy, matplotlib, skimage, _tkinter > test.py
    RUN apk add --no-cache python3
    RUN pip3 install --upgrade pip setuptools
    RUN apk add --no-cache py3-numpy
    RUN pip install matplotlib

以及相关的 docker 输出(如果我只是在 Linux 上运行,则类似的输出)

Collecting kiwisolver>=1.0.1
 Downloading kiwisolver-1.3.1.tar.gz (53 kB)
   ERROR: Command errored out with exit status 1:
    command: /usr/bin/python3.6 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-yp9mr2j7/kiwisolver_29f6c98e09ef4d15af4bbadde3b1c2a2/setup.py'"'"'; __file__='"'"'/tmp/pip-install-yp9mr2j7/kiwisolver_29f6c98e09ef4d15af4bbadde3b1c2a2/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-t2cdn0ra
        cwd: /tmp/pip-install-yp9mr2j7/kiwisolver_29f6c98e09ef4d15af4bbadde3b1c2a2/
   Complete output (44 lines):
   WARNING: The wheel package is not available.
     ERROR: Command errored out with exit status 1:
      command: /usr/bin/python3.6 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-wheel-nil1gs35/cppy_c6bc34a322e5441da8a1a97ba7950d95/setup.py'"'"'; __file__='"'"'/tmp/pip-wheel-nil1gs35/cppy_c6bc34a322e5441da8a1a97ba7950d95/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-wb4xn65c
          cwd: /tmp/pip-wheel-nil1gs35/cppy_c6bc34a322e5441da8a1a97ba7950d95/
     Complete output (6 lines):
     usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
        or: setup.py --help [cmd1 cmd2 ...]
        or: setup.py --help-commands
        or: setup.py cmd --help
   
     error: invalid command 'bdist_wheel'
     ----------------------------------------
     ERROR: Failed building wheel for cppy
   ERROR: Failed to build one or more wheels
   Traceback (most recent call last):
     File "/usr/lib/python3.6/site-packages/setuptools/installer.py", line 126, in fetch_build_egg
       subprocess.check_call(cmd)
     File "/usr/lib/python3.6/subprocess.py", line 311, in check_call
       raise CalledProcessError(retcode, cmd)
   subprocess.CalledProcessError: Command '['/usr/bin/python3.6', '-m', 'pip', '--disable-pip-version-check', 'wheel', '--no-deps', '-w', '/tmp/tmpa3b9n_qa', '--quiet', 'cppy>=1.1.0']' returned non-zero exit status 1.
   
   The above exception was the direct cause of the following exception:
   
   Traceback (most recent call last):
     File "<string>", line 1, in <module>
     File "/tmp/pip-install-yp9mr2j7/kiwisolver_29f6c98e09ef4d15af4bbadde3b1c2a2/setup.py", line 92, in <module>
       cmdclass={'build_ext': BuildExt},
     File "/usr/lib/python3.6/site-packages/setuptools/__init__.py", line 152, in setup
       _install_setup_requires(attrs)
     File "/usr/lib/python3.6/site-packages/setuptools/__init__.py", line 147, in _install_setup_requires
       dist.fetch_build_eggs(dist.setup_requires)
     File "/usr/lib/python3.6/site-packages/setuptools/dist.py", line 676, in fetch_build_eggs
       replace_conflicting=True,
     File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 766, in resolve
       replace_conflicting=replace_conflicting
     File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 1049, in best_match
       return self.obtain(req, installer)
     File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 1061, in obtain
       return installer(requirement)
     File "/usr/lib/python3.6/site-packages/setuptools/dist.py", line 732, in fetch_build_egg
       return fetch_build_egg(self, req)
     File "/usr/lib/python3.6/site-packages/setuptools/installer.py", line 128, in fetch_build_egg
       raise DistutilsError(str(e)) from e
   distutils.errors.DistutilsError: Command '['/usr/bin/python3.6', '-m', 'pip', '--disable-pip-version-check', 'wheel', '--no-deps', '-w', '/tmp/tmpa3b9n_qa', '--quiet', 'cppy>=1.1.0']' returned non-zero exit status 1.
   ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Error response from daemon: The command '/bin/sh -c pip3 install matplotlib' returned a non-zero code: 1

自从我花了一些时间以来matplotlib是用于开发的依赖项,我仍然决定将其作为整合 @β.εηοιτ.βε 指出的良好实践的答案

正如我的评论中所报告的,您缺少很多需要安装的依赖项matploblib来自 pip,它将在旅途中构建。

这里有一个Dockerfile将安装matplotlib在单个图像层中,通过在最后一步中删除构建依赖项来保持尽可能薄

FROM openjdk:8-jre-alpine

RUN apk add --no-cache tesseract-ocr python3 py3-numpy && \
    pip3 install --upgrade pip setuptools wheel && \
    apk add --no-cache --virtual .build-deps gcc g++ zlib-dev make python3-dev py-numpy-dev jpeg-dev && \
    pip3 install matplotlib && \
    apk del .build-deps
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Alpine 上安装 matplotlib 的相关文章

随机推荐

  • 将带有图像的 HTML5 画布另存为图像

    我正在尝试将带有图像的画布保存为 PNG 但是当我尝试这样做时 var myCanvas document getElementById myCanvas var img document createElement img var ctx
  • 带有自定义视图的 AlertDialog:调整大小以包裹视图的内容

    我在正在构建的应用程序中遇到了这个问题 请忽略所有设计缺陷和缺乏最佳实践方法 这纯粹是为了展示我无法解决的问题的示例 I have DialogFragment它返回一个基本的AlertDialog与定制View设置使用AlertDialo
  • jquery发送post数据而不定义url

    是否可以通过ajax或post发送数据而不定义url 这是我正在尝试工作的代码 gll delete click function var gll gll val var gll string gll split var gll id gl
  • jquery 替换不起作用

    DEMO 你好 我正在尝试删除 JS 中的箭头 但似乎替换不起作用 a class pr page prev Previous a a class pr page next Next a pr page prev text replace
  • 在 Windows 10 TP 上使用 VS-2015 CTP 5 和 Python 3.5a 编译 boost-python 教程

    我正在尝试获取boost python 扩展模块教程在 Windows 10 中使用现代 C 14 编译器 我已经使用 vc 14 VS 2015 CTP 5 下载了最新版本的 boost 1 57 和 python 3 5a 源代码 我使
  • c++ - SendInput() 无法正确管理 Alt 代码

    在我正在开发的程序中 我必须模拟击键 为此我使用SendInput 方法 传递一个向量作为参数 该向量包含作为击键一部分的输入 我当前的代码似乎可以与我正在测试的所有组合正常工作 Alt 代码除外 这就是我目前所做的 Press ALT i
  • PHP 数组转换为对象的效率?

    据我了解 PHPstdClass当代码嵌套得足够深以至于它实际上很重要时 对象通常比数组更快 如果我通过类型转换来定义 效率会受到怎样的影响stdClass飞行中的对象 var object array one gt 1 two gt 2
  • 从PDF中提取图像,如何处理JBIG2编码

    我有一堆 PDF 文件 其中一些是纯文本 但有些完全或部分保存为 每页一个图像 因为它们是从扫描仪生成的 我需要提取所有图像包含在 PDF 中 然后分别检查每个图像 我能够提取大部分图像在 SO 中找到一个 python 脚本 请参阅问题
  • 使用证书和 C# 连接到 Exchange Online

    有人使用 C 在线连接 Exchange 吗 我遇到了一个似乎无法取得进展的问题 我有以下代码片段尝试连接到在线交换 public Runspace getSpace String schema http schemas microsoft
  • Font Awesome 在本地工作,但在 Heroku 上不行

    所以我安装了 font awesome gem 一切看起来都很好 使用最新版本等 也包含在我的 application css 中 require font awesome 当我从本地查看时 结果很好并且字形图标出现了 当我将其上传到her
  • ASP.Net MVC 控制器在部署到 IIS 7 时导致“未找到”错误

    我正在使用 ASP Net MVC 开发一个网站 我在 Home 控制器中有一个方法 它在调用时返回部分视图 问题是当我使用 jQuery 调用控制器方法时 出现 404 Not Found 错误 仅当应用程序部署在 IIS 7 上时才会发
  • enableEventValidation 和 validateRequest 区别

    enableEventValidation 和 validateRequest 之间有什么区别 虽然前者是由控件引起的回发 回调 我假设只有服务器端 请告知 但后者是在每个请求上 这无论如何都是由控件回发引起的 或者 validateReq
  • Python中的数组是按值赋值还是按引用赋值?

    我想知道为什么当我删除原始数组时它会影响复制的数组 arr 1 2 3 arr1 arr del arr print arr1 this prints 但是当我修改原始数组的元素时 对复制的数组没有影响 arr 1 2 3 arr1 arr
  • 如何在 Bootstrap 弹出窗口中插入关闭按钮

    JS function example popover placement bottom html true title span class text info strong title strong span
  • DbContext 放弃更改而不进行处理

    我有一个桌面客户端应用程序 它使用模式窗口来设置分层对象的属性 由于这是一个客户端应用程序 并且对 DbContext 的访问不是线程化的 因此我在主表单上使用了一个长期运行的上下文 该上下文被传递给模态子项 这些模式窗口使用 Proper
  • 如何在 swift 中将 .caf 音频文件转换为 .mp4 文件

    我正在使用设备麦克风录制音频AVAudioRecorder返回文件在 caf该格式只能在 Apple 设备上播放 而不能在 Android 设备上播放 由于苹果不支持 mp3文件 所以我想将其转换为 mp4上传到服务器之前格式化 是 mp4
  • Java 库/api 将语言代码转换为语言名称

    是否有一个 Java 库 api 给定 iso 语言代码 返回相应的语言名称 例如 zh cn 应返回中文 en 应返回英文等 Java Locale 类可以做到这一点 new Locale zh cn getDisplayName gt
  • HTTPClient-java.net.SocketException:抛出未连接的套接字未实现

    我正在使用 HTTPClient 4 0 连接远程服务器并使用 HTTPS 传输文件 当我尝试连接时 出现异常 java net SocketException 未实现未连接的套接字 请查看堆栈跟踪 java net SocketExcep
  • 无法通过 SSH 连接到 Google Cloud

    我安装了谷歌云SDK 我认为 Web UI 创建了一个新实例 我对 SSH 不太了解 我按照此处描述的步骤进行操作 https cloud google com compute docs instances sshkeys 我有 Windo
  • 如何在 Alpine 上安装 matplotlib

    尝试在 alpine docker 映像上安装 matplotlib 我收到一堆丑陋的消息 我是否缺少一些需要手动安装的额外先决条件 这是泊坞窗文件 FROM openjdk 8 jre alpine RUN apk update RUN