Failed building wheel for pillow

Solution 1:

Try this:

apt-get install libjpeg-dev zlib1g-dev

and then

pip3 install Pillow

also try updating setuptools:

sudo pip install -U setuptools

Solution 2:

tl;dr pip install --upgrade pip setuptools wheel


The problem I ran into was python module Pillow version 3.7 failing to compile during python -m pip install Pillow.

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

(longer text)

Building wheels for collected packages: Pillow, pytest-dependency, yamllint, docopt
  Running setup.py bdist_wheel for Pillow ... error
  Complete output from command /tmp/project1/.venv-3.7.5-ubuntu-18.04/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-lsme78lo/Pillow/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/tmp7riogqqfpip-wheel- --python-tag cp37:
  /usr/lib/python3.7/distutils/dist.py:274: UserWarning: Unknown distribution option: 'long_description_content_type'
    warnings.warn(msg)
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-x86_64-3.7
  creating build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/BdfFontFile.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/BlpImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/BmpImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/BufrStubImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/ContainerIO.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/CurImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/DcxImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/DdsImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/EpsImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/ExifTags.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/FitsStubImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/FliImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/FontFile.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/FpxImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/FtexImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/GbrImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/GdImageFile.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/GifImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/GimpGradientFile.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/GimpPaletteFile.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/GribStubImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/Hdf5StubImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/IcnsImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/IcoImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/ImImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/Image.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/ImageChops.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/ImageCms.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/ImageColor.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/ImageDraw.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/ImageDraw2.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/ImageEnhance.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/ImageFile.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/ImageFilter.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/ImageFont.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/ImageGrab.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/ImageMath.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/ImageMode.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/ImageMorph.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/ImageOps.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/ImagePalette.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/ImagePath.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/ImageQt.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/ImageSequence.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/ImageShow.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/ImageStat.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/ImageTk.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/ImageTransform.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/ImageWin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/ImtImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/IptcImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/Jpeg2KImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/JpegImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/JpegPresets.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/McIdasImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/MicImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/MpegImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/MpoImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/MspImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/PSDraw.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/PaletteFile.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/PalmImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/PcdImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/PcfFontFile.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/PcxImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/PdfImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/PdfParser.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/PixarImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/PngImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/PpmImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/PsdImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/PyAccess.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/SgiImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/SpiderImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/SunImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/TarIO.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/TgaImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/TiffImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/TiffTags.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/WalImageFile.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/WebPImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/WmfImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/XVThumbImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/XbmImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/XpmImagePlugin.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/__init__.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/__main__.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/_binary.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/_tkinter_finder.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/_util.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/_version.py -> build/lib.linux-x86_64-3.7/PIL
  copying src/PIL/features.py -> build/lib.linux-x86_64-3.7/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 '.clang-format'
  warning: no previously-included files found matching '.coveragerc'
  warning: no previously-included files found matching '.editorconfig'
  warning: no previously-included files found matching '.readthedocs.yml'
  warning: no previously-included files found matching 'codecov.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 '.ci'
  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 "/tmp/pip-build-lsme78lo/Pillow/setup.py", line 1024, in <module>
      zip_safe=not (debug_build() or PLATFORM_MINGW),
    File /tmp/project1/.venv-3.7.5-ubuntu-18.04/lib/python3.7/site-packages/setuptools/__init__.py", line 129, in setup
      return distutils.core.setup(**attrs)
    File "/usr/lib/python3.7/distutils/core.py", line 148, in setup
      dist.run_commands()
    File "/usr/lib/python3.7/distutils/dist.py", line 966, in run_commands
      self.run_command(cmd)
    File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
      cmd_obj.run()
    File /tmp/project1/.venv-3.7.5-ubuntu-18.04/lib/python3.7/site-packages/wheel/bdist_wheel.py", line 299, in run
      self.run_command('build')
    File "/usr/lib/python3.7/distutils/cmd.py", line 313, in run_command
      self.distribution.run_command(command)
    File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
      cmd_obj.run()
    File "/usr/lib/python3.7/distutils/command/build.py", line 135, in run
      self.run_command(cmd_name)
    File "/usr/lib/python3.7/distutils/cmd.py", line 313, in run_command
      self.distribution.run_command(command)
    File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
      cmd_obj.run()
    File /tmp/project1/.venv-3.7.5-ubuntu-18.04/lib/python3.7/site-packages/setuptools/command/build_ext.py", line 78, in run
      _build_ext.run(self)
    File "/usr/lib/python3.7/distutils/command/build_ext.py", line 340, in run
      self.build_extensions()
    File "/tmp/pip-build-lsme78lo/Pillow/setup.py", line 790, in build_extensions
      raise RequiredDependencyException(f)
  __main__.RequiredDependencyException: jpeg

The versions of pip, setuptools, and wheel were the default Ubuntu 18 apt-managed versions. These are old versions.

I updated pip, setuptools, and wheel.

python -m pip install --upgrade pip setuptools wheel

This updated pip to 21.3.1, setuptools to 60.5.0, wheel to 0.37.1.

The pip install of Pillow succeeded.


This occurred on Ubuntu 18 using python 3.7.5.