9

When trying to install pillow using pip it produces this error. I have tried reinstalling setup tools and it has had no effect I am running on a pi zero with Diet Pi installed

pip install pillow

Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
    Collecting pillow
      Using cached 
    https://files.pythonhosted.org/packages/3c/7e/443be24431324bd34d2                                                                                                                                                             
    2dd9d11cc845d995bcd3b500676bcf23142756975/Pillow-5.4.1.tar.gz
Installing collected packages: pillow
  Running setup.py install for pillow ... error
    Complete output from command /usr/bin/python -u -c "import setuptools, token                                                                                                                                                             ize;__file__='/tmp/pip-install-Q2fwNi/pillow/setup.py';f=getattr(tokenize, 'open                                                                                                                                                             ', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(co                                                                                                                                                             de, __file__, 'exec'))" install --record /tmp/pip-record-uWuhA1/install-record.t                                                                                                                                                             xt --single-version-externally-managed --compile:
    Single threaded build, not installing mp_compile:1 processes
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-armv6l-2.7
    creating build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/FtexImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/PpmImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/ImageFont.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/JpegImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/PsdImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/ImImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/SgiImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/XVThumbImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/Image.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/_binary.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/PyAccess.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/ImageSequence.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/DdsImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/OleFileIO.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/XpmImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/McIdasImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/IcnsImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/ImageTransform.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/BmpImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/ImagePalette.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/IptcImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/TiffImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/GdImageFile.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/_util.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/CurImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/TiffTags.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/FliImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/WebPImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/ImageGrab.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/WmfImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/ImageEnhance.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/ImageShow.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/PdfImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/ImageOps.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/GbrImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/ImageTk.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/BlpImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/PcfFontFile.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/WalImageFile.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/Jpeg2KImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/ImageMorph.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/TgaImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/EpsImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/_tkinter_finder.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/IcoImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/ImageWin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/GimpGradientFile.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/ImageDraw.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/features.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/Hdf5StubImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/JpegPresets.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/__init__.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/DcxImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/ImagePath.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/ImageDraw2.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/ImageFilter.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/PcdImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/PSDraw.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/BufrStubImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/ImageChops.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/FpxImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/ImageCms.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/ExifTags.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/PdfParser.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/FontFile.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/PaletteFile.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/ImageMath.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/ImageQt.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/PalmImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/GifImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/ImtImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/_version.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/MicImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/MspImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/ContainerIO.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/ImageColor.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/GimpPaletteFile.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/PixarImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/ImageStat.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/GribStubImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/BdfFontFile.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/MpegImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/FitsStubImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/TarIO.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/SpiderImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/ImageFile.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/SunImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/PcxImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/XbmImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/PngImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/ImageMode.py -> build/lib.linux-armv6l-2.7/PIL
    copying src/PIL/MpoImagePlugin.py -> build/lib.linux-armv6l-2.7/PIL
    running egg_info
    writing src/Pillow.egg-info/PKG-INFO
    writing top-level names to src/Pillow.egg-info/top_level.txt
    writing dependency_links to src/Pillow.egg-info/dependency_links.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'
    no previously-included directories found matching 'docs/_static'
    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 '.landscape.yaml'
    warning: no previously-included files found matching '.readthedocs.yml'
    warning: no previously-included files found matching '.travis'
    warning: no previously-included files found matching '.travis/*'
    warning: no previously-included files found matching 'tox.ini'
    warning: no previously-included files matching '.git*' found anywhere in dis                                                                                                                                                             tribution
    warning: no previously-included files matching '*.pyc' found anywhere in dis                                                                                                                                                             tribution
    warning: no previously-included files matching '*.so' found anywhere in dist                                                                                                                                                             ribution
    writing manifest file 'src/Pillow.egg-info/SOURCES.txt'
    running build_ext


    The headers or library files could not be found for jpeg,
    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 "<string>", line 1, in <module>
      File "/tmp/pip-install-Q2fwNi/pillow/setup.py", line 812, in <module>
        raise RequiredDependencyException(msg)
    __main__.RequiredDependencyException:

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

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

    Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-xZLepb/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-1_XTeb/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-install-xZLepb/pillow/
2

3 Answers 3

15

try with this :

python3 -m pip install Pillow

if it won't work check this out :

apt-get install python-dev
apt-get install libjpeg-dev
apt-get install libjpeg8-dev
apt-get install libpng3
apt-get install libfreetype6-dev
ln -s /usr/lib/i386-linux-gnu/libfreetype.so /usr/lib
ln -s /usr/lib/i386-linux-gnu/libjpeg.so /usr/lib
ln -s /usr/lib/i386-linux-gnu/libz.so /usr/lib

pip install PIL  --allow-unverified PIL --allow-all-external

Be careful, on 64 bit platforms, the linked path needs to be different,

/usr/lib/x86_64-linux-gnu/libfreetype.so .

For a more architecture independent solution, create the links like

ln -s /usr/lib/`uname -i`-linux-gnu/libfreetype.so /usr/lib/

Also for Raspbian Stretch(Raspberry Pi) you can write:

sudo apt install python3-dev libjpeg8-dev libpng-dev libfreetype6-dev
3
  • @Tris Upgrades pip and uses it for all pip installs to avoid "no such option: --allow-all-external" error
    – Freeman
    Commented Feb 2, 2019 at 19:38
  • 1
    on latest Raspian stretch, changed to use sudo apt install python3-dev libjpeg8-dev libpng-dev libfreetype6-dev
    – popcnt
    Commented Apr 16, 2019 at 22:48
  • Thank you, it worked. Any reason why the -m command should be used? Do you know why it's not working by default?
    – jasper
    Commented Nov 20, 2019 at 13:43
3

I solved this by explicitly deleting the version numbering inside of the requirements.txt file That way pip fetched the latest pillow version so if forexample you had ...

pillow==7.0.2

change it to ..

pillow

then save the file and rerun the pip install -r requirements.txt line and it shd work

4
  • Wowh. it worked. Initially my requirements.txt had 6.2.1. So when i was installing 8.3.1 . I was getting error Running setup.py clean for Pillow Failed to build Pillow Installing collected packages: Pillow, gunicorn, djangorestframework, django-phone-field, django-oidc-provider, django-imagekit, django-filter, django-extensions, django-cors-headers, django-celery-beat, celery Attempting uninstall: Pillow Found existing installation: Pillow 8.3.1 Uninstalling Pillow-8.3.1: Successfully uninstalled Pillow-8.3.1 Running setup.py install for Pillow ... error
    – Devaski
    Commented Aug 26, 2021 at 17:16
  • 1
    Normally when you don't explicitly define the version, the installation defaults to the latest one. and it saves you lots of errors. so i would advise that you only explicitly use version numbering when you feel you must do. Though for collaborative projects like open source projects, you're going to want to use versions so that you don't get conflicting dependencies with those of your co-developers
    – N Jedidiah
    Commented Aug 27, 2021 at 4:36
  • New versions of PIL may have some requirements. I tried !python3 -m pip install Pillow==6.0.0 which works. Commented Oct 23, 2021 at 0:44
  • @NMukama The latest version is no better than a really old version in terms of dependency management. Both are equally as likely to break.
    – AlxVallejo
    Commented Aug 31, 2023 at 21:24
3

I experienced this same issue. To solve the issue I simply upgraded pip with the python3 -m pip install --upgrade pip command.

Not the answer you're looking for? Browse other questions tagged or ask your own question.