8

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/
Freeman
  • 9,464
  • 7
  • 35
  • 58
Tris
  • 196
  • 1
  • 1
  • 6

3 Answers3

14

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
Freeman
  • 9,464
  • 7
  • 35
  • 58
  • @Tris Upgrades pip and uses it for all pip installs to avoid "no such option: --allow-all-external" error – Freeman Feb 02 '19 at 19:38
  • 1
    on latest Raspian stretch, changed to use `sudo apt install python3-dev libjpeg8-dev libpng-dev libfreetype6-dev` – popcnt Apr 16 '19 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 Nov 20 '19 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

NMukama
  • 1,114
  • 9
  • 10
  • 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 Aug 26 '21 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 – NMukama Aug 27 '21 at 04:36
  • New versions of PIL may have some requirements. I tried !python3 -m pip install Pillow==6.0.0 which works. – Mehmet Burak Sayıcı Oct 23 '21 at 00: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 Aug 31 '23 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.