Installation Error: in short, Pillow 7.2.0 does not support Python 3.10

Hi team,

I’m having some installation issues for the command pip install openflexure-microscope-client

Here are the steps I followed:
I have a (nearly fresh) windows 10 install. I’ve installed Spyder IDE for all users.
I then went to python.org and installed the latest python release (python 3.10) for all users and selected the “Add to PATH” option.

Then I opened a command prompt as administrator and ran pip install openflexure-microscope-client

This throws an error. Full output:

Collecting openflexure-microscope-client
  Downloading openflexure_microscope_client-0.1.6-py3-none-any.whl (7.7 kB)
Collecting numpy<2.0,>=1.17
  Downloading numpy-1.23.4-cp310-cp310-win_amd64.whl (14.6 MB)
     ---------------------------------------- 14.6/14.6 MB 5.3 MB/s eta 0:00:00
Collecting Pillow<8.0,>=7.0
  Downloading Pillow-7.2.0.tar.gz (39.1 MB)
     ---------------------------------------- 39.1/39.1 MB 5.2 MB/s eta 0:00:00
  Preparing metadata (setup.py) ... done
Collecting zeroconf<0.26,>=0.25
  Downloading zeroconf-0.25.1-py3-none-any.whl (66 kB)
     ---------------------------------------- 66.4/66.4 kB 3.5 MB/s eta 0:00:00
Collecting requests<3.0,>=2.22
  Downloading requests-2.28.1-py3-none-any.whl (62 kB)
     ---------------------------------------- 62.8/62.8 kB 3.3 MB/s eta 0:00:00
Collecting idna<4,>=2.5
  Downloading idna-3.4-py3-none-any.whl (61 kB)
     ---------------------------------------- 61.5/61.5 kB 3.2 MB/s eta 0:00:00
Collecting certifi>=2017.4.17
  Downloading certifi-2022.9.24-py3-none-any.whl (161 kB)
     ---------------------------------------- 161.1/161.1 kB 4.7 MB/s eta 0:00:00
Collecting urllib3<1.27,>=1.21.1
  Downloading urllib3-1.26.12-py2.py3-none-any.whl (140 kB)
     ---------------------------------------- 140.4/140.4 kB 4.2 MB/s eta 0:00:00
Collecting charset-normalizer<3,>=2
  Downloading charset_normalizer-2.1.1-py3-none-any.whl (39 kB)
Collecting ifaddr
  Downloading ifaddr-0.2.0-py3-none-any.whl (12 kB)
Using legacy 'setup.py install' for Pillow, since package 'wheel' is not installed.
Installing collected packages: ifaddr, zeroconf, urllib3, Pillow, numpy, idna, charset-normalizer, certifi, requests, openflexure-microscope-client
  Running setup.py install for Pillow ... error
  error: subprocess-exited-with-error

  × Running setup.py install for Pillow did not run successfully.
  │ exit code: 1
  ╰─> [188 lines of output]
      C:\Users\Jotham\AppData\Local\Temp\pip-install-euspr6ex\pillow_24fc01d3d7db4f53b8f3fe88f523f59c\setup.py:42: RuntimeWarning: Pillow 7.2.0 does not support Python 3.10 and does not provide prebuilt Windows binaries. We do not recommend building from source on Windows.
        warnings.warn(
      running install
      C:\Program Files\Python310\lib\site-packages\setuptools\command\install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
        warnings.warn(
      running build
      running build_py
      creating build
      creating build\lib.win-amd64-cpython-310
      creating build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\BdfFontFile.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\BlpImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\BmpImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\BufrStubImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ContainerIO.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\CurImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\DcxImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\DdsImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\EpsImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ExifTags.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\features.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\FitsStubImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\FliImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\FontFile.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\FpxImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\FtexImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\GbrImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\GdImageFile.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\GifImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\GimpGradientFile.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\GimpPaletteFile.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\GribStubImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\Hdf5StubImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\IcnsImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\IcoImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\Image.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageChops.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageCms.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageColor.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageDraw.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageDraw2.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageEnhance.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageFile.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageFilter.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageFont.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageGrab.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageMath.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageMode.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageMorph.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageOps.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImagePalette.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImagePath.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageQt.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageSequence.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageShow.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageStat.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageTk.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageTransform.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageWin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImtImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\IptcImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\Jpeg2KImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\JpegImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\JpegPresets.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\McIdasImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\MicImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\MpegImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\MpoImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\MspImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PaletteFile.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PalmImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PcdImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PcfFontFile.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PcxImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PdfImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PdfParser.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PixarImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PngImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PpmImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PsdImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PSDraw.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PyAccess.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\SgiImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\SpiderImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\SunImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\TarIO.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\TgaImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\TiffImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\TiffTags.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\WalImageFile.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\WebPImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\WmfImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\XbmImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\XpmImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\XVThumbImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\_binary.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\_tkinter_finder.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\_util.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\_version.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\__init__.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\__main__.py -> build\lib.win-amd64-cpython-310\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 '.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'
      adding license file 'LICENSE'
      writing manifest file 'src\Pillow.egg-info\SOURCES.txt'
      running build_ext


      The headers or library files could not be found for zlib,
      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 "C:\Users\Jotham\AppData\Local\Temp\pip-install-euspr6ex\pillow_24fc01d3d7db4f53b8f3fe88f523f59c\setup.py", line 864, in <module>
          setup(
        File "C:\Program Files\Python310\lib\site-packages\setuptools\__init__.py", line 87, in setup
          return distutils.core.setup(**attrs)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\core.py", line 177, in setup
          return run_commands(dist)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\core.py", line 193, in run_commands
          dist.run_commands()
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\dist.py", line 968, in run_commands
          self.run_command(cmd)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\dist.py", line 1217, in run_command
          super().run_command(command)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\dist.py", line 987, in run_command
          cmd_obj.run()
        File "C:\Program Files\Python310\lib\site-packages\setuptools\command\install.py", line 68, in run
          return orig.install.run(self)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\command\install.py", line 695, in run
          self.run_command('build')
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\cmd.py", line 317, in run_command
          self.distribution.run_command(command)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\dist.py", line 1217, in run_command
          super().run_command(command)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\dist.py", line 987, in run_command
          cmd_obj.run()
        File "C:\Program Files\Python310\lib\site-packages\setuptools\command\build.py", line 24, in run
          super().run()
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\command\build.py", line 131, in run
          self.run_command(cmd_name)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\cmd.py", line 317, in run_command
          self.distribution.run_command(command)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\dist.py", line 1217, in run_command
          super().run_command(command)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\dist.py", line 987, in run_command
          cmd_obj.run()
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\command\build_ext.py", line 339, in run
          self.build_extensions()
        File "C:\Users\Jotham\AppData\Local\Temp\pip-install-euspr6ex\pillow_24fc01d3d7db4f53b8f3fe88f523f59c\setup.py", line 694, in build_extensions
          raise RequiredDependencyException(f)
      __main__.RequiredDependencyException: zlib

      During handling of the above exception, another exception occurred:

      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "C:\Users\Jotham\AppData\Local\Temp\pip-install-euspr6ex\pillow_24fc01d3d7db4f53b8f3fe88f523f59c\setup.py", line 918, in <module>
          raise RequiredDependencyException(msg)
      __main__.RequiredDependencyException:

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

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


      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: legacy-install-failure

× Encountered error while trying to install package.
╰─> Pillow

note: This is an issue with the package mentioned above, not pip.
hint: See above for output from the failure.

C:\Windows\system32>```

The root cause appears to be this snippet:

Using legacy 'setup.py install' for Pillow, since package 'wheel' is not installed.
Installing collected packages: ifaddr, zeroconf, urllib3, Pillow, numpy, idna, charset-normalizer, certifi, requests, openflexure-microscope-client
  Running setup.py install for Pillow ... error
  error: subprocess-exited-with-error

  × Running setup.py install for Pillow did not run successfully.
  │ exit code: 1
  ╰─> [188 lines of output]
      C:\Users\Jotham\AppData\Local\Temp\pip-install-euspr6ex\pillow_24fc01d3d7db4f53b8f3fe88f523f59c\setup.py:42: RuntimeWarning: Pillow 7.2.0 does not support Python 3.10 and does not provide prebuilt Windows binaries. We do not recommend building from source on Windows.

Ok so lets install wheel.

C:\Windows\system32>pip install wheel
Collecting wheel
  Downloading wheel-0.37.1-py2.py3-none-any.whl (35 kB)
Installing collected packages: wheel
Successfully installed wheel-0.37.1

Now lets try installing again:

C:\Windows\system32>pip install openflexure-microscope-client
Collecting openflexure-microscope-client
  Using cached openflexure_microscope_client-0.1.6-py3-none-any.whl (7.7 kB)
Collecting requests<3.0,>=2.22
  Using cached requests-2.28.1-py3-none-any.whl (62 kB)
Requirement already satisfied: zeroconf<0.26,>=0.25 in c:\program files\python310\lib\site-packages (from openflexure-microscope-client) (0.25.1)
Collecting Pillow<8.0,>=7.0
  Using cached Pillow-7.2.0.tar.gz (39.1 MB)
  Preparing metadata (setup.py) ... done
Collecting numpy<2.0,>=1.17
  Using cached numpy-1.23.4-cp310-cp310-win_amd64.whl (14.6 MB)
Collecting idna<4,>=2.5
  Using cached idna-3.4-py3-none-any.whl (61 kB)
Collecting certifi>=2017.4.17
  Using cached certifi-2022.9.24-py3-none-any.whl (161 kB)
Collecting charset-normalizer<3,>=2
  Using cached charset_normalizer-2.1.1-py3-none-any.whl (39 kB)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in c:\program files\python310\lib\site-packages (from requests<3.0,>=2.22->openflexure-microscope-client) (1.26.12)
Requirement already satisfied: ifaddr in c:\program files\python310\lib\site-packages (from zeroconf<0.26,>=0.25->openflexure-microscope-client) (0.2.0)
Building wheels for collected packages: Pillow
  Building wheel for Pillow (setup.py) ... error
  error: subprocess-exited-with-error

  × python setup.py bdist_wheel did not run successfully.
  │ exit code: 1
  ╰─> [184 lines of output]
      C:\Users\Jotham\AppData\Local\Temp\pip-install-dl1dtssn\pillow_bab1b2a52467432aa2ff7e00001456f1\setup.py:42: RuntimeWarning: Pillow 7.2.0 does not support Python 3.10 and does not provide prebuilt Windows binaries. We do not recommend building from source on Windows.
        warnings.warn(
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build\lib.win-amd64-cpython-310
      creating build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\BdfFontFile.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\BlpImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\BmpImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\BufrStubImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ContainerIO.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\CurImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\DcxImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\DdsImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\EpsImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ExifTags.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\features.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\FitsStubImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\FliImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\FontFile.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\FpxImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\FtexImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\GbrImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\GdImageFile.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\GifImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\GimpGradientFile.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\GimpPaletteFile.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\GribStubImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\Hdf5StubImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\IcnsImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\IcoImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\Image.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageChops.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageCms.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageColor.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageDraw.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageDraw2.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageEnhance.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageFile.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageFilter.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageFont.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageGrab.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageMath.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageMode.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageMorph.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageOps.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImagePalette.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImagePath.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageQt.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageSequence.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageShow.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageStat.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageTk.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageTransform.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageWin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImtImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\IptcImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\Jpeg2KImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\JpegImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\JpegPresets.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\McIdasImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\MicImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\MpegImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\MpoImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\MspImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PaletteFile.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PalmImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PcdImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PcfFontFile.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PcxImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PdfImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PdfParser.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PixarImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PngImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PpmImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PsdImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PSDraw.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PyAccess.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\SgiImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\SpiderImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\SunImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\TarIO.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\TgaImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\TiffImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\TiffTags.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\WalImageFile.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\WebPImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\WmfImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\XbmImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\XpmImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\XVThumbImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\_binary.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\_tkinter_finder.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\_util.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\_version.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\__init__.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\__main__.py -> build\lib.win-amd64-cpython-310\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 '.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'
      adding license file 'LICENSE'
      writing manifest file 'src\Pillow.egg-info\SOURCES.txt'
      running build_ext


      The headers or library files could not be found for zlib,
      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 "C:\Users\Jotham\AppData\Local\Temp\pip-install-dl1dtssn\pillow_bab1b2a52467432aa2ff7e00001456f1\setup.py", line 864, in <module>
          setup(
        File "C:\Program Files\Python310\lib\site-packages\setuptools\__init__.py", line 87, in setup
          return distutils.core.setup(**attrs)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\core.py", line 177, in setup
          return run_commands(dist)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\core.py", line 193, in run_commands
          dist.run_commands()
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\dist.py", line 968, in run_commands
          self.run_command(cmd)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\dist.py", line 1217, in run_command
          super().run_command(command)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\dist.py", line 987, in run_command
          cmd_obj.run()
        File "C:\Program Files\Python310\lib\site-packages\wheel\bdist_wheel.py", line 299, in run
          self.run_command('build')
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\cmd.py", line 317, in run_command
          self.distribution.run_command(command)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\dist.py", line 1217, in run_command
          super().run_command(command)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\dist.py", line 987, in run_command
          cmd_obj.run()
        File "C:\Program Files\Python310\lib\site-packages\setuptools\command\build.py", line 24, in run
          super().run()
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\command\build.py", line 131, in run
          self.run_command(cmd_name)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\cmd.py", line 317, in run_command
          self.distribution.run_command(command)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\dist.py", line 1217, in run_command
          super().run_command(command)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\dist.py", line 987, in run_command
          cmd_obj.run()
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\command\build_ext.py", line 339, in run
          self.build_extensions()
        File "C:\Users\Jotham\AppData\Local\Temp\pip-install-dl1dtssn\pillow_bab1b2a52467432aa2ff7e00001456f1\setup.py", line 694, in build_extensions
          raise RequiredDependencyException(f)
      __main__.RequiredDependencyException: zlib

      During handling of the above exception, another exception occurred:

      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "C:\Users\Jotham\AppData\Local\Temp\pip-install-dl1dtssn\pillow_bab1b2a52467432aa2ff7e00001456f1\setup.py", line 918, in <module>
          raise RequiredDependencyException(msg)
      __main__.RequiredDependencyException:

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

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


      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for Pillow
  Running setup.py clean for Pillow
Failed to build Pillow
Installing collected packages: Pillow, numpy, idna, charset-normalizer, certifi, requests, openflexure-microscope-client
  Running setup.py install for Pillow ... error
  error: subprocess-exited-with-error

  × Running setup.py install for Pillow did not run successfully.
  │ exit code: 1
  ╰─> [188 lines of output]
      C:\Users\Jotham\AppData\Local\Temp\pip-install-dl1dtssn\pillow_bab1b2a52467432aa2ff7e00001456f1\setup.py:42: RuntimeWarning: Pillow 7.2.0 does not support Python 3.10 and does not provide prebuilt Windows binaries. We do not recommend building from source on Windows.
        warnings.warn(
      running install
      C:\Program Files\Python310\lib\site-packages\setuptools\command\install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
        warnings.warn(
      running build
      running build_py
      creating build
      creating build\lib.win-amd64-cpython-310
      creating build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\BdfFontFile.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\BlpImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\BmpImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\BufrStubImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ContainerIO.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\CurImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\DcxImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\DdsImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\EpsImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ExifTags.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\features.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\FitsStubImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\FliImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\FontFile.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\FpxImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\FtexImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\GbrImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\GdImageFile.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\GifImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\GimpGradientFile.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\GimpPaletteFile.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\GribStubImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\Hdf5StubImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\IcnsImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\IcoImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\Image.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageChops.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageCms.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageColor.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageDraw.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageDraw2.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageEnhance.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageFile.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageFilter.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageFont.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageGrab.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageMath.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageMode.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageMorph.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageOps.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImagePalette.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImagePath.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageQt.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageSequence.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageShow.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageStat.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageTk.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageTransform.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImageWin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\ImtImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\IptcImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\Jpeg2KImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\JpegImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\JpegPresets.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\McIdasImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\MicImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\MpegImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\MpoImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\MspImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PaletteFile.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PalmImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PcdImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PcfFontFile.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PcxImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PdfImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PdfParser.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PixarImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PngImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PpmImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PsdImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PSDraw.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\PyAccess.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\SgiImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\SpiderImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\SunImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\TarIO.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\TgaImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\TiffImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\TiffTags.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\WalImageFile.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\WebPImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\WmfImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\XbmImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\XpmImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\XVThumbImagePlugin.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\_binary.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\_tkinter_finder.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\_util.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\_version.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\__init__.py -> build\lib.win-amd64-cpython-310\PIL
      copying src\PIL\__main__.py -> build\lib.win-amd64-cpython-310\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 '.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'
      adding license file 'LICENSE'
      writing manifest file 'src\Pillow.egg-info\SOURCES.txt'
      running build_ext


      The headers or library files could not be found for zlib,
      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 "C:\Users\Jotham\AppData\Local\Temp\pip-install-dl1dtssn\pillow_bab1b2a52467432aa2ff7e00001456f1\setup.py", line 864, in <module>
          setup(
        File "C:\Program Files\Python310\lib\site-packages\setuptools\__init__.py", line 87, in setup
          return distutils.core.setup(**attrs)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\core.py", line 177, in setup
          return run_commands(dist)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\core.py", line 193, in run_commands
          dist.run_commands()
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\dist.py", line 968, in run_commands
          self.run_command(cmd)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\dist.py", line 1217, in run_command
          super().run_command(command)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\dist.py", line 987, in run_command
          cmd_obj.run()
        File "C:\Program Files\Python310\lib\site-packages\setuptools\command\install.py", line 68, in run
          return orig.install.run(self)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\command\install.py", line 695, in run
          self.run_command('build')
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\cmd.py", line 317, in run_command
          self.distribution.run_command(command)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\dist.py", line 1217, in run_command
          super().run_command(command)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\dist.py", line 987, in run_command
          cmd_obj.run()
        File "C:\Program Files\Python310\lib\site-packages\setuptools\command\build.py", line 24, in run
          super().run()
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\command\build.py", line 131, in run
          self.run_command(cmd_name)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\cmd.py", line 317, in run_command
          self.distribution.run_command(command)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\dist.py", line 1217, in run_command
          super().run_command(command)
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\dist.py", line 987, in run_command
          cmd_obj.run()
        File "C:\Program Files\Python310\lib\site-packages\setuptools\_distutils\command\build_ext.py", line 339, in run
          self.build_extensions()
        File "C:\Users\Jotham\AppData\Local\Temp\pip-install-dl1dtssn\pillow_bab1b2a52467432aa2ff7e00001456f1\setup.py", line 694, in build_extensions
          raise RequiredDependencyException(f)
      __main__.RequiredDependencyException: zlib

      During handling of the above exception, another exception occurred:

      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "C:\Users\Jotham\AppData\Local\Temp\pip-install-dl1dtssn\pillow_bab1b2a52467432aa2ff7e00001456f1\setup.py", line 918, in <module>
          raise RequiredDependencyException(msg)
      __main__.RequiredDependencyException:

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

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


      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: legacy-install-failure

× Encountered error while trying to install package.
╰─> Pillow

note: This is an issue with the package mentioned above, not pip.
hint: See above for output from the failure.

Other than installing an old version of python, is there an easy way around this?

It appears the last snippet I posted has this excerpt:

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

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

So we head over to the link, and land on a page with this matrix:

It appears an upgrade to a newer version of Pillow may be required for the project? Pillow 7.2 only supports python 3.8 or lower. Python 3.8 was upgrdaded due to security reasons, so it would be good practice to make the project compatible with later versions.
:thinking:

To make matters slightly more difficult, python.org no longer provides installers for python 3.8 which is the last version that pillow 7.2 supports.

That is rather frustrating. Python dependencies are never simple.

Yea. I noticed anaconda ships with an older python version. Turns out it’s Python 3.9 so that’s not actually that helpful.

I uninstalled python 3.10 and Spyder.

Installed Anaconda. Anaconda Navigator is suggesting I updated the Spyder IDE… why not. The updater gets stuck with no error messages.

It does appear that python related modules and libraries really are never simple. I’ve been spoiled by apt-get packages and .deb

Ok ok, the solution is simple.

Just download the microscope_client.py from gitlab, don’t bother pip installing it, and away you go. Just works!

I haven’t fully tested all the functions etc, it might still error out on me but I’m able to display images.

1 Like

Well done for solving your own problem! I see there is already an issue that gives few details, this is really helpful and explains precisely what the problem is. Thanks for linking to it from the issue thread.

I’ve updated the dependencies: could you try installing:

https://gitlab.com/openflexure/openflexure-microscope-pyclient/-/jobs/3186253437/artifacts/raw/dist/openflexure_microscope_client-0.1.7-py3-none-any.whl?inline=false

(I think this should be installable with pip, after you have first installed wheel with pip install wheel)

If you are using a Raspberry Pi I’d be particularly keen to hear whether this works for you! I’ve added tests that should now check it installs OK on Python 3.7 through 3.10, but I don’t currently have CI set up to check if it would install on a Pi. That’s tricky, though not (I think) impossible.

If this all works, I’ll make another release so the changes come through automatically when you try to install with pip.

2 Likes

Thank you Richard! I will try that when I am able and will report back the results.

This will shortly be updated on PyPI, so you can pip install openflexure_microscope_client and get Pillow 9. Thanks for flagging this.