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

Question:

I’m running alpine-linux on a Raspberry Pi 2. I’m trying to install Pillow via this command:

pip install pillow

This is the output from the command:

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('rn', '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('rn', '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

I think this is probably the relevant section:

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.

My research shows it’s probably something with the header files. I have installed these:

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
Asked By: uberma

||

Answers:

Alpine Linux uses musl libc. You probably need to install musl-dev.

Answered By: Zakaria

I’ve found some python packages fail to install via pip install but work if you install the associated alpine linux package. For example pip install uwsgi fails complaining about limits.h, but apk add uwsgi-python works fine. Suggest trying apk add py-pillow instead of pip install pillow.

Answered By: rcurrie

@zakaria answer is correct, but if you stumble upon

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

then you need the package linux-headers (notice the prefix linux before limits.h

apk add linux-headers
Answered By: Riccardo Galli

I had a very similar problem with installing the Python library regex in Docker using the python:3.6-alpine image, for Alpine Linux >= 3.3.

pip install regex

I had to add gcc and musl-dev packages:

apk --no-cache add gcc musl-dev
Answered By: malmed

limits.h is located in libc-dev:

apk add libc-dev
Answered By: Alexandre

I faced this problem on python:3.10-slim-buster image.

Solved with RUN apt-get --no-install-recommends install -y build-essential

Although this won’t work in Alpine, it may be useful to others who experience the same problem in other environments.

Answered By: Yevhen Bondar
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.