在 Alpine Linux 上安装 Pillow 时没有这样的文件或目录 "limits.h"

No such file or directory "limits.h" when installing Pillow on Alpine Linux

我是 运行 alpine-linux Raspberry Pi 2. 我正在尝试通过此命令安装 Pillow:

pip install pillow

这是命令的输出:

Installing collected packages: pillow
Running setup.py install for pillow
    Complete output from command /usr/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip-build-gNq0WA/pillow/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-nDKwei-record/install-record.txt --single-version-externally-managed --compile:
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-armv7l-2.7
    creating build/lib.linux-armv7l-2.7/PIL
    copying PIL/XVThumbImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/XpmImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/XbmImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/WmfImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/WebPImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/WalImageFile.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/TiffTags.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/TiffImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/TgaImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/TarIO.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/SunImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/SpiderImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/SgiImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/PyAccess.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/PSDraw.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/PsdImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/PpmImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/PngImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/PixarImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/PdfImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/PcxImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/PcfFontFile.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/PcdImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/PalmImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/PaletteFile.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/OleFileIO.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/MspImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/MpoImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/MpegImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/MicImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/McIdasImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/JpegPresets.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/JpegImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/Jpeg2KImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/IptcImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/ImtImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/ImImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/ImageWin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/ImageTransform.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/ImageTk.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/ImageStat.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/ImageShow.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/ImageSequence.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/ImageQt.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/ImagePath.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/ImagePalette.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/ImageOps.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/ImageMorph.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/ImageMode.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/ImageMath.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/ImageGrab.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/ImageFont.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/ImageFilter.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/ImageFileIO.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/ImageFile.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/ImageEnhance.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/ImageDraw2.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/ImageDraw.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/ImageColor.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/ImageCms.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/ImageChops.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/Image.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/IcoImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/IcnsImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/Hdf5StubImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/GribStubImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/GimpPaletteFile.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/GimpGradientFile.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/GifImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/GdImageFile.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/GbrImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/FpxImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/FontFile.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/FliImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/FitsStubImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/ExifTags.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/EpsImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/DcxImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/CurImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/ContainerIO.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/BufrStubImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/BmpImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/BdfFontFile.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/_util.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/_binary.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/__init__.py -> build/lib.linux-armv7l-2.7/PIL
    running egg_info
    writing Pillow.egg-info/PKG-INFO
    writing top-level names to Pillow.egg-info/top_level.txt
    writing dependency_links to Pillow.egg-info/dependency_links.txt
    warning: manifest_maker: standard file '-c' not found

    reading manifest file 'Pillow.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    warning: no files found matching 'LICENSE' under directory 'docs'
    writing manifest file 'Pillow.egg-info/SOURCES.txt'
    copying PIL/OleFileIO-README.md -> build/lib.linux-armv7l-2.7/PIL
    running build_ext
    building 'PIL._imaging' extension
    creating build/temp.linux-armv7l-2.7/libImaging
    gcc -fno-strict-aliasing -Os -fomit-frame-pointer -DNDEBUG -Os -fomit-frame-pointer -fPIC -DHAVE_LIBJPEG -I/tmp/pip-build-gNq0WA/pillow/libImaging -I/usr/include -I/usr/include/python2.7 -c _imaging.c -o build/temp.linux-armv7l-2.7/_imaging.o
    gcc -fno-strict-aliasing -Os -fomit-frame-pointer -DNDEBUG -Os -fomit-frame-pointer -fPIC -DHAVE_LIBJPEG -I/tmp/pip-build-gNq0WA/pillow/libImaging -I/usr/include -I/usr/include/python2.7 -c outline.c -o build/temp.linux-armv7l-2.7/outline.o
    gcc -fno-strict-aliasing -Os -fomit-frame-pointer -DNDEBUG -Os -fomit-frame-pointer -fPIC -DHAVE_LIBJPEG -I/tmp/pip-build-gNq0WA/pillow/libImaging -I/usr/include -I/usr/include/python2.7 -c libImaging/Bands.c -o build/temp.linux-armv7l-2.7/libImaging/Bands.o
    gcc -fno-strict-aliasing -Os -fomit-frame-pointer -DNDEBUG -Os -fomit-frame-pointer -fPIC -DHAVE_LIBJPEG -I/tmp/pip-build-gNq0WA/pillow/libImaging -I/usr/include -I/usr/include/python2.7 -c libImaging/ConvertYCbCr.c -o build/temp.linux-armv7l-2.7/libImaging/ConvertYCbCr.o
    In file included from _imaging.c:76:0:
    /usr/include/python2.7/Python.h:19:20: fatal error: limits.h: No such file or directory
    #include <limits.h>
                        ^
    compilation terminated.
    In file included from outline.c:20:0:
    /usr/include/python2.7/Python.h:19:20: fatal error: limits.h: No such file or directory
    #include <limits.h>
                        ^
    compilation terminated.
    In file included from libImaging/ImPlatform.h:10:0,
                    from libImaging/Imaging.h:14,
                    from libImaging/ConvertYCbCr.c:15:
    /usr/include/python2.7/Python.h:19:20: fatal error: limits.h: No such file or directory
    #include <limits.h>
                        ^
    compilation terminated.
    In file included from libImaging/ImPlatform.h:10:0,
                    from libImaging/Imaging.h:14,
                    from libImaging/Bands.c:19:
    /usr/include/python2.7/Python.h:19:20: fatal error: limits.h: No such file or directory
    #include <limits.h>
                        ^
    compilation terminated.
    gcc -fno-strict-aliasing -Os -fomit-frame-pointer -DNDEBUG -Os -fomit-frame-pointer -fPIC -DHAVE_LIBJPEG -I/tmp/pip-build-gNq0WA/pillow/libImaging -I/usr/include -I/usr/include/python2.7 -c libImaging/Draw.c -o build/temp.linux-armv7l-2.7/libImaging/Draw.o
    gcc -fno-strict-aliasing -Os -fomit-frame-pointer -DNDEBUG -Os -fomit-frame-pointer -fPIC -DHAVE_LIBJPEG -I/tmp/pip-build-gNq0WA/pillow/libImaging -I/usr/include -I/usr/include/python2.7 -c libImaging/Filter.c -o build/temp.linux-armv7l-2.7/libImaging/Filter.o
    gcc -fno-strict-aliasing -Os -fomit-frame-pointer -DNDEBUG -Os -fomit-frame-pointer -fPIC -DHAVE_LIBJPEG -I/tmp/pip-build-gNq0WA/pillow/libImaging -I/usr/include -I/usr/include/python2.7 -c libImaging/GifEncode.c -o build/temp.linux-armv7l-2.7/libImaging/GifEncode.o
    gcc -fno-strict-aliasing -Os -fomit-frame-pointer -DNDEBUG -Os -fomit-frame-pointer -fPIC -DHAVE_LIBJPEG -I/tmp/pip-build-gNq0WA/pillow/libImaging -I/usr/include -I/usr/include/python2.7 -c libImaging/LzwDecode.c -o build/temp.linux-armv7l-2.7/libImaging/LzwDecode.o
    In file included from libImaging/ImPlatform.h:10:0,
                    from libImaging/Imaging.h:14,
                    from libImaging/Draw.c:35:
    /usr/include/python2.7/Python.h:19:20: fatal error: limits.h: No such file or directory
    #include <limits.h>
                        ^
    compilation terminated.
    In file included from libImaging/ImPlatform.h:10:0,
                    from libImaging/Imaging.h:14,
                    from libImaging/Filter.c:27:
    /usr/include/python2.7/Python.h:19:20: fatal error: limits.h: No such file or directory
    #include <limits.h>
                        ^
    compilation terminated.
    In file included from libImaging/ImPlatform.h:10:0,
                    from libImaging/Imaging.h:14,
                    from libImaging/GifEncode.c:20:
    /usr/include/python2.7/Python.h:19:20: fatal error: limits.h: No such file or directory
    #include <limits.h>
                        ^
    compilation terminated.
    In file included from libImaging/ImPlatform.h:10:0,
                    from libImaging/Imaging.h:14,
                    from libImaging/LzwDecode.c:31:
    /usr/include/python2.7/Python.h:19:20: fatal error: limits.h: No such file or directory
    #include <limits.h>
                        ^
    compilation terminated.
    gcc -fno-strict-aliasing -Os -fomit-frame-pointer -DNDEBUG -Os -fomit-frame-pointer -fPIC -DHAVE_LIBJPEG -I/tmp/pip-build-gNq0WA/pillow/libImaging -I/usr/include -I/usr/include/python2.7 -c libImaging/Offset.c -o build/temp.linux-armv7l-2.7/libImaging/Offset.o
    gcc -fno-strict-aliasing -Os -fomit-frame-pointer -DNDEBUG -Os -fomit-frame-pointer -fPIC -DHAVE_LIBJPEG -I/tmp/pip-build-gNq0WA/pillow/libImaging -I/usr/include -I/usr/include/python2.7 -c libImaging/Quant.c -o build/temp.linux-armv7l-2.7/libImaging/Quant.o
    gcc -fno-strict-aliasing -Os -fomit-frame-pointer -DNDEBUG -Os -fomit-frame-pointer -fPIC -DHAVE_LIBJPEG -I/tmp/pip-build-gNq0WA/pillow/libImaging -I/usr/include -I/usr/include/python2.7 -c libImaging/PcxDecode.c -o build/temp.linux-armv7l-2.7/libImaging/PcxDecode.o
    gcc -fno-strict-aliasing -Os -fomit-frame-pointer -DNDEBUG -Os -fomit-frame-pointer -fPIC -DHAVE_LIBJPEG -I/tmp/pip-build-gNq0WA/pillow/libImaging -I/usr/include -I/usr/include/python2.7 -c libImaging/RawEncode.c -o build/temp.linux-armv7l-2.7/libImaging/RawEncode.o
    In file included from libImaging/ImPlatform.h:10:0,
                    from libImaging/Imaging.h:14,
                    from libImaging/Offset.c:18:
    /usr/include/python2.7/Python.h:19:20: fatal error: limits.h: No such file or directory
    #include <limits.h>
                        ^
    compilation terminated.
    In file included from libImaging/ImPlatform.h:10:0,
                    from libImaging/Imaging.h:14,
                    from libImaging/Quant.c:21:
    /usr/include/python2.7/Python.h:19:20: fatal error: limits.h: No such file or directory
    #include <limits.h>
                        ^
    compilation terminated.
    In file included from libImaging/ImPlatform.h:10:0,
                    from libImaging/Imaging.h:14,
                    from libImaging/PcxDecode.c:17:
    /usr/include/python2.7/Python.h:19:20: fatal error: limits.h: No such file or directory
    #include <limits.h>
                        ^
    compilation terminated.
    In file included from libImaging/ImPlatform.h:10:0,
                    from libImaging/Imaging.h:14,
                    from libImaging/RawEncode.c:21:
    /usr/include/python2.7/Python.h:19:20: fatal error: limits.h: No such file or directory
    #include <limits.h>
                        ^
    compilation terminated.
    gcc -fno-strict-aliasing -Os -fomit-frame-pointer -DNDEBUG -Os -fomit-frame-pointer -fPIC -DHAVE_LIBJPEG -I/tmp/pip-build-gNq0WA/pillow/libImaging -I/usr/include -I/usr/include/python2.7 -c libImaging/UnpackYCC.c -o build/temp.linux-armv7l-2.7/libImaging/UnpackYCC.o
    gcc -fno-strict-aliasing -Os -fomit-frame-pointer -DNDEBUG -Os -fomit-frame-pointer -fPIC -DHAVE_LIBJPEG -I/tmp/pip-build-gNq0WA/pillow/libImaging -I/usr/include -I/usr/include/python2.7 -c libImaging/ZipEncode.c -o build/temp.linux-armv7l-2.7/libImaging/ZipEncode.o
    gcc -fno-strict-aliasing -Os -fomit-frame-pointer -DNDEBUG -Os -fomit-frame-pointer -fPIC -DHAVE_LIBJPEG -I/tmp/pip-build-gNq0WA/pillow/libImaging -I/usr/include -I/usr/include/python2.7 -c libImaging/BoxBlur.c -o build/temp.linux-armv7l-2.7/libImaging/BoxBlur.o
    In file included from libImaging/ImPlatform.h:10:0,
                    from libImaging/Imaging.h:14,
                    from libImaging/UnpackYCC.c:17:
    /usr/include/python2.7/Python.h:19:20: fatal error: limits.h: No such file or directory
    #include <limits.h>
                        ^
    compilation terminated.
    In file included from libImaging/ImPlatform.h:10:0,
                    from libImaging/Imaging.h:14,
                    from libImaging/ZipEncode.c:18:
    /usr/include/python2.7/Python.h:19:20: fatal error: limits.h: No such file or directory
    #include <limits.h>
                        ^
    compilation terminated.
    In file included from libImaging/BoxBlur.c:1:0:
    /usr/include/python2.7/Python.h:19:20: fatal error: limits.h: No such file or directory
    #include <limits.h>
                        ^
    compilation terminated.
    Building using 4 processes
    gcc -shared -Wl,--as-needed build/temp.linux-armv7l-2.7/_imaging.o build/temp.linux-armv7l-2.7/decode.o build/temp.linux-armv7l-2.7/encode.o build/temp.linux-armv7l-2.7/map.o build/temp.linux-armv7l-2.7/display.o build/temp.linux-armv7l-2.7/outline.o build/temp.linux-armv7l-2.7/path.o build/temp.linux-armv7l-2.7/libImaging/Access.o build/temp.linux-armv7l-2.7/libImaging/AlphaComposite.o build/temp.linux-armv7l-2.7/libImaging/Resample.o build/temp.linux-armv7l-2.7/libImaging/Bands.o build/temp.linux-armv7l-2.7/libImaging/BitDecode.o build/temp.linux-armv7l-2.7/libImaging/Blend.o build/temp.linux-armv7l-2.7/libImaging/Chops.o build/temp.linux-armv7l-2.7/libImaging/Convert.o build/temp.linux-armv7l-2.7/libImaging/ConvertYCbCr.o build/temp.linux-armv7l-2.7/libImaging/Copy.o build/temp.linux-armv7l-2.7/libImaging/Crc32.o build/temp.linux-armv7l-2.7/libImaging/Crop.o build/temp.linux-armv7l-2.7/libImaging/Dib.o build/temp.linux-armv7l-2.7/libImaging/Draw.o build/temp.linux-armv7l-2.7/libImaging/Effects.o build/temp.linux-armv7l-2.7/libImaging/EpsEncode.o build/temp.linux-armv7l-2.7/libImaging/File.o build/temp.linux-armv7l-2.7/libImaging/Fill.o build/temp.linux-armv7l-2.7/libImaging/Filter.o build/temp.linux-armv7l-2.7/libImaging/FliDecode.o build/temp.linux-armv7l-2.7/libImaging/Geometry.o build/temp.linux-armv7l-2.7/libImaging/GetBBox.o build/temp.linux-armv7l-2.7/libImaging/GifDecode.o build/temp.linux-armv7l-2.7/libImaging/GifEncode.o build/temp.linux-armv7l-2.7/libImaging/HexDecode.o build/temp.linux-armv7l-2.7/libImaging/Histo.o build/temp.linux-armv7l-2.7/libImaging/JpegDecode.o build/temp.linux-armv7l-2.7/libImaging/JpegEncode.o build/temp.linux-armv7l-2.7/libImaging/LzwDecode.o build/temp.linux-armv7l-2.7/libImaging/Matrix.o build/temp.linux-armv7l-2.7/libImaging/ModeFilter.o build/temp.linux-armv7l-2.7/libImaging/MspDecode.o build/temp.linux-armv7l-2.7/libImaging/Negative.o build/temp.linux-armv7l-2.7/libImaging/Offset.o build/temp.linux-armv7l-2.7/libImaging/Pack.o build/temp.linux-armv7l-2.7/libImaging/PackDecode.o build/temp.linux-armv7l-2.7/libImaging/Palette.o build/temp.linux-armv7l-2.7/libImaging/Paste.o build/temp.linux-armv7l-2.7/libImaging/Quant.o build/temp.linux-armv7l-2.7/libImaging/QuantOctree.o build/temp.linux-armv7l-2.7/libImaging/QuantHash.o build/temp.linux-armv7l-2.7/libImaging/QuantHeap.o build/temp.linux-armv7l-2.7/libImaging/PcdDecode.o build/temp.linux-armv7l-2.7/libImaging/PcxDecode.o build/temp.linux-armv7l-2.7/libImaging/PcxEncode.o build/temp.linux-armv7l-2.7/libImaging/Point.o build/temp.linux-armv7l-2.7/libImaging/RankFilter.o build/temp.linux-armv7l-2.7/libImaging/RawDecode.o build/temp.linux-armv7l-2.7/libImaging/RawEncode.o build/temp.linux-armv7l-2.7/libImaging/Storage.o build/temp.linux-armv7l-2.7/libImaging/SunRleDecode.o build/temp.linux-armv7l-2.7/libImaging/TgaRleDecode.o build/temp.linux-armv7l-2.7/libImaging/Unpack.o build/temp.linux-armv7l-2.7/libImaging/UnpackYCC.o build/temp.linux-armv7l-2.7/libImaging/UnsharpMask.o build/temp.linux-armv7l-2.7/libImaging/XbmDecode.o build/temp.linux-armv7l-2.7/libImaging/XbmEncode.o build/temp.linux-armv7l-2.7/libImaging/ZipDecode.o build/temp.linux-armv7l-2.7/libImaging/ZipEncode.o build/temp.linux-armv7l-2.7/libImaging/TiffDecode.o build/temp.linux-armv7l-2.7/libImaging/Incremental.o build/temp.linux-armv7l-2.7/libImaging/Jpeg2KDecode.o build/temp.linux-armv7l-2.7/libImaging/Jpeg2KEncode.o build/temp.linux-armv7l-2.7/libImaging/BoxBlur.o -L/usr/lib -L/usr/local/lib -L/usr/lib -ljpeg -lpython2.7 -o build/lib.linux-armv7l-2.7/PIL/_imaging.so
    gcc: error: build/temp.linux-armv7l-2.7/_imaging.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/decode.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/encode.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/map.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/display.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/outline.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/path.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Access.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/AlphaComposite.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Resample.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Bands.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/BitDecode.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Blend.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Chops.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Convert.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/ConvertYCbCr.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Copy.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Crc32.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Crop.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Dib.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Draw.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Effects.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/EpsEncode.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/File.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Fill.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Filter.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/FliDecode.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Geometry.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/GetBBox.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/GifDecode.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/GifEncode.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/HexDecode.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Histo.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/JpegDecode.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/JpegEncode.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/LzwDecode.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Matrix.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/ModeFilter.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/MspDecode.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Negative.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Offset.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Pack.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/PackDecode.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Palette.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Paste.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Quant.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/QuantOctree.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/QuantHash.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/QuantHeap.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/PcdDecode.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/PcxDecode.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/PcxEncode.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Point.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/RankFilter.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/RawDecode.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/RawEncode.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Storage.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/SunRleDecode.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/TgaRleDecode.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Unpack.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/UnpackYCC.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/UnsharpMask.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/XbmDecode.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/XbmEncode.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/ZipDecode.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/ZipEncode.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/TiffDecode.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Incremental.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Jpeg2KDecode.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/Jpeg2KEncode.o: No such file or directory
    gcc: error: build/temp.linux-armv7l-2.7/libImaging/BoxBlur.o: No such file or directory
    error: command 'gcc' failed with exit status 1

    ----------------------------------------
Command "/usr/bin/python -c "import setup tools, tokenize;__file__='/tmp/pip-build-gNq0WA/pillow/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-nDKwei-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-gNq0WA/pillow

我认为这可能是相关部分:

In file included from libImaging/BoxBlur.c:1:0:
    /usr/include/python2.7/Python.h:19:20: fatal error: limits.h: No such file or directory
    #include <limits.h>
                        ^
    compilation terminated.

我的研究表明它可能与头文件有关。我已经安装了这些:

apk add py-configobj libusb py-pip python-dev gcc linux-headers
pip install --upgrade pip
pip install -U setuptools
pip install Cheetah
pip install pyusb

Alpine Linux 使用 musl libc。您可能需要安装 musl-dev.

我发现一些 python 软件包无法通过 pip install 安装,但如果您安装相关的 alpine linux 软件包,则可以正常工作。例如 pip install uwsgi 抱怨 limits.h 失败,但 apk add uwsgi-python 工作正常。建议尝试 apk 添加 py-pillow 而不是 pip 安装枕头。

@zakaria 的回答是正确的,但如果你偶然发现

fatal error: linux/limits.h: No such file or directory

那么你需要包 linux-headers(注意 limits.h

之前的前缀 linux
apk add linux-headers

我在使用 python:3.6-alpine 图像在 Docker 中安装 Python 库 regex 时遇到了非常相似的问题,对于 Alpine Linux >= 3.3 .

pip install regex

我必须添加 gccmusl-dev 包:

apk --no-cache add gcc musl-dev

limits.h 位于 libc-dev:

apk add libc-dev