首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在高山3.9 docker镜像中安装Dask[complete]

无法在高山3.9 docker镜像中安装Dask[complete]
EN

Stack Overflow用户
提问于 2020-01-16 15:39:14
回答 3查看 348关注 0票数 3

作为我的一个需求的一部分,我正在尝试从alpin3.9创建一个docker镜像,并在其中安装python3.8,它工作得很好。但是,当我尝试在其中安装daskcomplete时,它失败了,并显示以下错误:

代码语言:javascript
复制
ERROR: Command errored out with exit status 1:
 command: /usr/bin/python3.6 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-qz3whw9z/pillow/setup.py'"'"'; __file__='"'"'/tmp/pip-install-qz3whw9z/pillow/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-9hrkto9l/install-record.txt --single-version-externally-managed --compile
     cwd: /tmp/pip-install-qz3whw9z/pillow/
Complete output (174 lines):
running install
running build
running build_py
creating build
creating build/lib.linux-x86_64-3.6
creating build/lib.linux-x86_64-3.6/PIL
copying src/PIL/TiffTags.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/ImageMath.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/PsdImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/PngImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/_util.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/Image.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/GimpGradientFile.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/PSDraw.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/ExifTags.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/FitsStubImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/IcnsImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/ImImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/PcfFontFile.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/GribStubImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/ImagePath.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/SunImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/XbmImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/PyAccess.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/GbrImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/JpegImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/DdsImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/PdfImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/SgiImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/MspImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/features.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/PalmImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/ImtImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/EpsImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/GifImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/CurImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/XpmImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/WmfImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/FtexImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/PcdImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/BmpImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/DcxImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/ImageQt.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/FontFile.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/TiffImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/IcoImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/McIdasImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/BufrStubImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/ImageWin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/ImageOps.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/FpxImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/XVThumbImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/ImageFont.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/ImageChops.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/PpmImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/ImageShow.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/ImageMode.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/Jpeg2KImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/JpegPresets.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/ImageColor.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/PcxImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/WalImageFile.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/ImageMorph.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/ImageSequence.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/ImageGrab.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/ImageFile.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/BlpImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/_tkinter_finder.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/ImageFilter.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/ImageStat.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/BdfFontFile.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/Hdf5StubImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/WebPImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/PixarImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/ImagePalette.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/__main__.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/ImageEnhance.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/MpoImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/GimpPaletteFile.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/ContainerIO.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/ImageDraw.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/ImageTransform.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/ImageDraw2.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/TgaImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/MpegImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/ImageTk.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/__init__.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/ImageCms.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/FliImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/_binary.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/TarIO.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/GdImageFile.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/PdfParser.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/IptcImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/PaletteFile.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/MicImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/SpiderImagePlugin.py -> build/lib.linux-x86_64-3.6/PIL
copying src/PIL/_version.py -> build/lib.linux-x86_64-3.6/PIL
running egg_info
writing src/Pillow.egg-info/PKG-INFO
writing dependency_links to src/Pillow.egg-info/dependency_links.txt
writing top-level names to src/Pillow.egg-info/top_level.txt
reading manifest file 'src/Pillow.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching '*.c'
warning: no files found matching '*.h'
warning: no files found matching '*.sh'
warning: no previously-included files found matching '.appveyor.yml'
warning: no previously-included files found matching '.coveragerc'
warning: no previously-included files found matching '.codecov.yml'
warning: no previously-included files found matching '.editorconfig'
warning: no previously-included files found matching '.readthedocs.yml'
warning: no previously-included files found matching 'azure-pipelines.yml'
warning: no previously-included files matching '.git*' found anywhere in distribution
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files matching '*.so' found anywhere in distribution
no previously-included directories found matching '.azure-pipelines'
no previously-included directories found matching '.travis'
writing manifest file 'src/Pillow.egg-info/SOURCES.txt'
running build_ext


The headers or library files could not be found for zlib,
a required dependency when compiling Pillow from source.

Please see the install instructions at:
   https://pillow.readthedocs.io/en/latest/installation.html

Traceback (most recent call last):
  File "/tmp/pip-install-qz3whw9z/pillow/setup.py", line 892, in <module>
    zip_safe=not (debug_build() or PLATFORM_MINGW),
  File "/usr/lib/python3.6/site-packages/setuptools/__init__.py", line 145, in setup
    return distutils.core.setup(**attrs)
  File "/usr/lib/python3.6/distutils/core.py", line 148, in setup
    dist.run_commands()
  File "/usr/lib/python3.6/distutils/dist.py", line 955, in run_commands
    self.run_command(cmd)
  File "/usr/lib/python3.6/distutils/dist.py", line 974, in run_command
    cmd_obj.run()
  File "/usr/lib/python3.6/site-packages/setuptools/command/install.py", line 61, in run
    return orig.install.run(self)
  File "/usr/lib/python3.6/distutils/command/install.py", line 545, in run
    self.run_command('build')
  File "/usr/lib/python3.6/distutils/cmd.py", line 313, in run_command
    self.distribution.run_command(command)
  File "/usr/lib/python3.6/distutils/dist.py", line 974, in run_command
    cmd_obj.run()
  File "/usr/lib/python3.6/distutils/command/build.py", line 135, in run
    self.run_command(cmd_name)
  File "/usr/lib/python3.6/distutils/cmd.py", line 313, in run_command
    self.distribution.run_command(command)
  File "/usr/lib/python3.6/distutils/dist.py", line 974, in run_command
    cmd_obj.run()
  File "/usr/lib/python3.6/distutils/command/build_ext.py", line 339, in run
    self.build_extensions()
  File "/tmp/pip-install-qz3whw9z/pillow/setup.py", line 687, in build_extensions
    raise RequiredDependencyException(f)
__main__.RequiredDependencyException: zlib

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/tmp/pip-install-qz3whw9z/pillow/setup.py", line 907, in <module>
    raise RequiredDependencyException(msg)
__main__.RequiredDependencyException:

The headers or library files could not be found for zlib,
a required dependency when compiling Pillow from source.

Please see the install instructions at:
   https://pillow.readthedocs.io/en/latest/installation.html


----------------------------------------
ERROR: Command errored out with exit status 1: /usr/bin/python3.6 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-qz3whw9z/pillow/setup.py'"'"'; __file__='"'"'/tmp/pip-install-qz3whw9z/pillow/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-9hrkto9l/install-record.txt --single-version-externally-managed --compile Check the logs for full command output.

同时,当我尝试用debian:buster/python:latest做同样的事情时,它工作得很好,但由于一些标准的原因,我只需要使用高山3.9图像。添加docker文件内容,以便可以复制错误。

代码语言:javascript
复制
FROM alpine:3.9
RUN apk add --no-cache python3 && \
  python3 -m ensurepip && \
  rm -r /usr/lib/python*/ensurepip && \
  pip3 install --upgrade pip setuptools && \
  if [ ! -e /usr/bin/pip ]; then ln -s pip3 /usr/bin/pip ; fi && \
  if [[ ! -e /usr/bin/python ]]; then ln -sf /usr/bin/python3 /usr/bin/python; fi && \
  rm -r /root/.cache
RUN apk upgrade --no-cache
RUN apk add build-base
RUN apk add --no-cache python3-dev libstdc++ && \
  apk add --no-cache g++ && \
  apk add --no-cache gcc && \
  ln -s /usr/include/locale.h /usr/include/xlocale.h && \
  #pip3 install numpy && \
  #pip3 install pandas && \
  pip3 install pycryptodome && \
  pip3 install "dask[complete]"
CMD ["python3"]
EN

回答 3

Stack Overflow用户

发布于 2020-01-16 16:31:07

Alpine是一个最小的工作linux映像,因此经常缺少编译python包所需的库。我经常遇到类似的问题,这取决于我想要安装的pyhton包。

您的日志显示,您缺少zlib的头文件:

无法找到zlib的头文件或库文件,这是从源代码编译Pillow时所需的依赖项。

因此,您需要安装相应的库zlib-dev

对于我创建的图像,我通常使用以下代码片段:

代码语言:javascript
复制
RUN apk add --update --no-cache --virtual .build-deps \
        gcc \ 
        musl-dev \ 
        make \ 
    && apk add --update --no-cache \
        python3 \
        python3-dev \ 
        krb5-dev \ 
        libxml2-dev \ 
        libxslt-dev \ 
        libffi-dev \
        jpeg-dev \
        zlib-dev \
        libffi-dev \ 
        openssl-dev \
        git \
    && pip3 install --upgrade pip \
    && pip3 install --cache-dir=/pipcache -r requirements.txt && rm -rf /pipcache \
    && apk del .build-deps

希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2020-01-16 21:23:20

我建议你完全不要使用阿尔卑斯山。

使用阿尔卑斯山的动机是小图片。但是,Python轮子包,预编译的二进制文件,不能在高山上工作。所以你必须重新编译所有的东西。所以你必须安装一个编译器和开发包,然后重新编译所有的东西,这只会使你的镜像构建速度变慢,你的镜像变大。

如果你从基于Debian的图像开始,大部分时间你根本不需要编译任何东西。如果你这样做了,它将是一个很小的Python包集合。

更长的文章,还有其他原因为什么高山不是一个好主意:https://pythonspeed.com/articles/base-image-python-docker-images/

票数 0
EN

Stack Overflow用户

发布于 2020-01-30 16:40:19

@Simon的答案非常接近,但并不完全是我想要的。通过一点研究,我能够解决这个问题,发布了正确的Dockerfile。

代码语言:javascript
复制
FROM alpine:3.9
RUN apk add --no-cache python3 && \
  python3 -m ensurepip && \
  rm -r /usr/lib/python*/ensurepip && \
  pip3 install --upgrade pip setuptools && \
  if [ ! -e /usr/bin/pip ]; then ln -s pip3 /usr/bin/pip ; fi && \
  if [[ ! -e /usr/bin/python ]]; then ln -sf /usr/bin/python3 /usr/bin/python; 
  fi && \
  rm -r /root/.cache
RUN apk upgrade --no-cache
RUN apk add build-base
RUN apk add --no-cache python3-dev libstdc++ && \
apk add --no-cache g++ && \
apk add --no-cache gcc \
  krb5-dev \
  libstdc++ \
  libxml2-dev \
  libxslt-dev \
  libffi-dev \
  jpeg-dev \
  zlib-dev \
  openssl-dev \
  build-base \
  git && \
ln -s /usr/include/locale.h /usr/include/xlocale.h && \
pip3 install pycryptodome && \
pip3 install "dask[complete]"
CMD ["python3"]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59764923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档