Pioreactor / PiOLED-display-plugin

MIT License
1 stars 0 forks source link

Fails to install on a leader and a worker - missing dependency #1

Open sputnick opened 8 months ago

sputnick commented 8 months ago

Using the latest pioreactor OS

pioreactor@pioworker1:~ $ pio install-plugin pioled-display-plugin 2024-01-04T12:52:39+0000 DEBUG [install_plugin] Installing plugin pioled-display-plugin. 2024-01-04T12:52:39+0000 DEBUG [install_plugin] bash /usr/local/bin/install_pioreactor_plugin.sh pioled-display-plugin 2024-01-04T12:53:53+0000 ERROR [install_plugin] Failed to install plugin pioled-display-plugin. See logs. 2024-01-04T12:53:53+0000 DEBUG [install_plugin] b"Archive: /tmp/pioled_display_plugin-0.2.4-py3-none-any.whl\n inflating: /tmp/tmp.oOdMrizUnJ/pioled_display_plugin/init.py \n inflating: /tmp/tmp.oOdMrizUnJ/pioled_display_plugin/post_install.sh \n inflating: /tmp/tmp.oOdMrizUnJ/pioled_display_plugin/pre_uninstall.sh \n inflating: /tmp/tmp.oOdMrizUnJ/pioled_display_plugin-0.2.4.dist-info/LICENSE.txt \n inflating: /tmp/tmp.oOdMrizUnJ/pioled_display_plugin-0.2.4.dist-info/METADATA \n inflating: /tmp/tmp.oOdMrizUnJ/pioled_display_plugin-0.2.4.dist-info/WHEEL \n inflating: /tmp/tmp.oOdMrizUnJ/pioled_display_plugin-0.2.4.dist-info/entry_points.txt \n inflating: /tmp/tmp.oOdMrizUnJ/pioled_display_plugin-0.2.4.dist-info/top_level.txt \n inflating: /tmp/tmp.oOdMrizUnJ/pioled_display_plugin-0.2.4.dist-info/RECORD \nCollecting pioled-display-plugin\n Using cached pioled_display_plugin-0.2.4-py3-none-any.whl.metadata (1.5 kB)\nCollecting adafruit-circuitpython-ssd1306==2.12.16 (from pioled-display-plugin)\n Using cached adafruit_circuitpython_ssd1306-2.12.16-py3-none-any.whl.metadata (5.3 kB)\nCollecting Pillow==10.1.0 (from pioled-display-plugin)\n Using cached Pillow-10.1.0.tar.gz (50.8 MB)\n Installing build dependencies: started\n Installing build dependencies: finished with status 'done'\n Getting requirements to build wheel: started\n Getting requirements to build wheel: finished with status 'done'\n Installing backend dependencies: started\n Installing backend dependencies: finished with status 'done'\n Preparing metadata (pyproject.toml): started\n Preparing metadata (pyproject.toml): finished with status 'done'\nCollecting Adafruit-Blinka (from adafruit-circuitpython-ssd1306==2.12.16->pioled-display-plugin)\n Using cached Adafruit_Blinka-8.29.0-py3-none-any.whl.metadata (5.3 kB)\nCollecting adafruit-circuitpython-busdevice (from adafruit-circuitpython-ssd1306==2.12.16->pioled-display-plugin)\n Using cached adafruit_circuitpython_busdevice-5.2.6-py3-none-any.whl.metadata (4.0 kB)\nCollecting adafruit-circuitpython-framebuf (from adafruit-circuitpython-ssd1306==2.12.16->pioled-display-plugin)\n Using cached adafruit_circuitpython_framebuf-1.6.5-py3-none-any.whl.metadata (3.3 kB)\nCollecting Adafruit-PlatformDetect>=3.53.0 (from Adafruit-Blinka->adafruit-circuitpython-ssd1306==2.12.16->pioled-display-plugin)\n Using cached Adafruit_PlatformDetect-3.57.0-py3-none-any.whl.metadata (3.8 kB)\nCollecting Adafruit-PureIO>=1.1.7 (from Adafruit-Blinka->adafruit-circuitpython-ssd1306==2.12.16->pioled-display-plugin)\n Using cached Adafruit_PureIO-1.1.11-py3-none-any.whl.metadata (3.0 kB)\nCollecting pyftdi>=0.40.0 (from Adafruit-Blinka->adafruit-circuitpython-ssd1306==2.12.16->pioled-display-plugin)\n Using cached pyftdi-0.55.0-py3-none-any.whl.metadata (3.1 kB)\nCollecting adafruit-circuitpython-typing (from Adafruit-Blinka->adafruit-circuitpython-ssd1306==2.12.16->pioled-display-plugin)\n Using cached adafruit_circuitpython_typing-1.9.6-py3-none-any.whl.metadata (3.2 kB)\nCollecting pyusb!=1.2.0,>=1.0.0 (from pyftdi>=0.40.0->Adafruit-Blinka->adafruit-circuitpython-ssd1306==2.12.16->pioled-display-plugin)\n Using cached pyusb-1.2.1-py3-none-any.whl (58 kB)\nCollecting pyserial>=3.0 (from pyftdi>=0.40.0->Adafruit-Blinka->adafruit-circuitpython-ssd1306==2.12.16->pioled-display-plugin)\n Using cached pyserial-3.5-py2.py3-none-any.whl (90 kB)\nCollecting adafruit-circuitpython-requests (from adafruit-circuitpython-typing->Adafruit-Blinka->adafruit-circuitpython-ssd1306==2.12.16->pioled-display-plugin)\n Using cached adafruit_circuitpython_requests-2.0.3-py3-none-any.whl.metadata (3.3 kB)\nCollecting typing-extensions~=4.0 (from adafruit-circuitpython-typing->Adafruit-Blinka->adafruit-circuitpython-ssd1306==2.12.16->pioled-display-plugin)\n Using cached typing_extensions-4.9.0-py3-none-any.whl.metadata (3.0 kB)\nUsing cached pioled_display_plugin-0.2.4-py3-none-any.whl (5.4 kB)\nUsing cached adafruit_circuitpython_ssd1306-2.12.16-py3-none-any.whl (7.6 kB)\nUsing cached Adafruit_Blinka-8.29.0-py3-none-any.whl (318 kB)\nUsing cached adafruit_circuitpython_busdevice-5.2.6-py3-none-any.whl (7.5 kB)\nUsing cached adafruit_circuitpython_framebuf-1.6.5-py3-none-any.whl (9.2 kB)\nUsing cached Adafruit_PlatformDetect-3.57.0-py3-none-any.whl (23 kB)\nUsing cached Adafruit_PureIO-1.1.11-py3-none-any.whl (10 kB)\nUsing cached pyftdi-0.55.0-py3-none-any.whl (145 kB)\nUsing cached adafruit_circuitpython_typing-1.9.6-py3-none-any.whl (10 kB)\nUsing cached typing_extensions-4.9.0-py3-none-any.whl (32 kB)\nUsing cached adafruit_circuitpython_requests-2.0.3-py3-none-any.whl (11 kB)\nBuilding wheels for collected packages: Pillow\n Building wheel for Pillow (pyproject.toml): started\n Building wheel for Pillow (pyproject.toml): finished with status 'error'\nFailed to build Pillow\n" 2024-01-04T12:53:53+0000 DEBUG [install_plugin] b'+ export LC_ALL=C\n+ LC_ALL=C\n+ plugin_name=pioled-display-plugin\n+ source=\n+ clean_plugin_name=pioled-display-plugin\n+ clean_plugin_name_with_dashes=pioled-display-plugin\n+ clean_plugin_name_with_underscores=pioled_display_plugin\n++ python3 -c \'import site; print(site.getsitepackages()[0])\'\n+ install_folder=/usr/local/lib/python3.11/dist-packages/pioled_display_plugin\n++ crudini --get /home/pioreactor/.pioreactor/config.ini cluster.topology leader_hostname\n+ leader_hostname=pioreactorleader\n++ hostname\n+ \'[\' pioreactorleader = pioworker1 \']\'\n+ am_i_leader=false\n+ \'[\' -n \'\' \']\'\n+ download_and_check_if_leader_only pioled-display-plugin\n+ local PACKAGE_NAME=pioled-display-plugin\n+ local CLEAN_PACKAGE_NAME=pioled_display_plugin\n+ pip download -qq --no-deps --dest /tmp pioled-display-plugin\n+ local WHL_FILE\n++ ls /tmp/pioled_display_plugin-0.2.4-py3-none-any.whl\n+ WHL_FILE=/tmp/pioled_display_plugin-0.2.4-py3-none-any.whl\n+ local TEMPDIR\n++ mktemp -d\n+ TEMPDIR=/tmp/tmp.oOdMrizUnJ\n+ unzip /tmp/pioled_display_plugin-0.2.4-py3-none-any.whl -d /tmp/tmp.oOdMrizUnJ\n+ \'[\' -f /tmp/tmp.oOdMrizUnJ/LEADER_ONLY \']\'\n+ rm -rf /tmp/tmp.oOdMrizUnJ\n+ return 1\n+ sudo pip3 install --upgrade --force-reinstall --ignore-installed pioled-display-plugin\n error: subprocess-exited-with-error\n \n \xc3\x97 Building wheel for Pillow (pyproject.toml) did not run successfully.\n \xe2\x94\x82 exit code: 1\n \xe2\x95\xb0\xe2\x94\x80> [206 lines of output]\n running bdist_wheel\n running build\n running build_py\n creating build\n creating build/lib.linux-armv7l-cpython-311\n creating build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/features.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/_version.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/_util.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/_tkinter_finder.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/_deprecate.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/_binary.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/main.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/init.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/XpmImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/XbmImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/XVThumbImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/WmfImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/WebPImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/WalImageFile.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/TiffTags.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/TiffImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/TgaImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/TarIO.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/SunImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/SpiderImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/SgiImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/QoiImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/PyAccess.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/PsdImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/PpmImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/PngImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/PixarImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/PdfParser.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/PdfImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/PcxImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/PcfFontFile.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/PcdImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/PalmImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/PaletteFile.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/PSDraw.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/MspImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/MpoImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/MpegImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/MicImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/McIdasImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/JpegPresets.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/JpegImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/Jpeg2KImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/IptcImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/ImtImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/ImageWin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/ImageTransform.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/ImageTk.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/ImageStat.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/ImageShow.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/ImageSequence.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/ImageQt.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/ImagePath.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/ImagePalette.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/ImageOps.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/ImageMorph.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/ImageMode.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/ImageMath.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/ImageGrab.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/ImageFont.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/ImageFilter.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/ImageFile.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/ImageEnhance.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/ImageDraw2.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/ImageDraw.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/ImageColor.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/ImageCms.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/ImageChops.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/Image.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/ImImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/IcoImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/IcnsImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/Hdf5StubImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/GribStubImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/GimpPaletteFile.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/GimpGradientFile.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/GifImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/GdImageFile.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/GbrImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/FtexImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/FpxImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/FontFile.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/FliImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/FitsImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/ExifTags.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/EpsImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/DdsImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/DcxImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/CurImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/ContainerIO.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/BufrStubImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/BmpImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/BlpImagePlugin.py -> build/lib.linux-armv7l-cpython-311/PIL\n copying src/PIL/BdfFontFile.py -> build/lib.linux-armv7l-cpython-311/PIL\n running egg_info\n writing src/Pillow.egg-info/PKG-INFO\n writing dependency_links to src/Pillow.egg-info/dependency_links.txt\n writing requirements to src/Pillow.egg-info/requires.txt\n writing top-level names to src/Pillow.egg-info/top_level.txt\n reading manifest file \'src/Pillow.egg-info/SOURCES.txt\'\n reading manifest template \'MANIFEST.in\'\n warning: no files found matching \'.c\'\n warning: no files found matching \'.h\'\n warning: no files found matching \'.sh\'\n warning: no files found matching \'.txt\'\n warning: no previously-included files found matching \'.appveyor.yml\'\n warning: no previously-included files found matching \'.clang-format\'\n warning: no previously-included files found matching \'.coveragerc\'\n warning: no previously-included files found matching \'.editorconfig\'\n warning: no previously-included files found matching \'.readthedocs.yml\'\n warning: no previously-included files found matching \'codecov.yml\'\n warning: no previously-included files found matching \'renovate.json\'\n warning: no previously-included files matching \'.git\' found anywhere in distribution\n warning: no previously-included files matching \'.so\' found anywhere in distribution\n no previously-included directories found matching \'.ci\'\n no previously-included directories found matching \'wheels\'\n adding license file \'LICENSE\'\n writing manifest file \'src/Pillow.egg-info/SOURCES.txt\'\n running build_ext\n \n \n The headers or library files could not be found for jpeg,\n a required dependency when compiling Pillow from source.\n \n Please see the install instructions at:\n https://pillow.readthedocs.io/en/latest/installation.html\n \n Traceback (most recent call last):\n File "", line 988, in \n File "/tmp/pip-build-env-72bewtfl/overlay/local/lib/python3.11/dist-packages/setuptools/init.py", line 103, in setup\n return distutils.core.setup(attrs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/tmp/pip-build-env-72bewtfl/overlay/local/lib/python3.11/dist-packages/setuptools/_distutils/core.py", line 185, in setup\n return run_commands(dist)\n ^^^^^^^^^^^^^^^^^^\n File "/tmp/pip-build-env-72bewtfl/overlay/local/lib/python3.11/dist-packages/setuptools/_distutils/core.py", line 201, in run_commands\n dist.run_commands()\n File "/tmp/pip-build-env-72bewtfl/overlay/local/lib/python3.11/dist-packages/setuptools/_distutils/dist.py", line 969, in run_commands\n self.run_command(cmd)\n File "/tmp/pip-build-env-72bewtfl/overlay/local/lib/python3.11/dist-packages/setuptools/dist.py", line 963, in run_command\n super().run_command(command)\n File "/tmp/pip-build-env-72bewtfl/overlay/local/lib/python3.11/dist-packages/setuptools/_distutils/dist.py", line 988, in run_command\n cmd_obj.run()\n File "/tmp/pip-build-env-72bewtfl/normal/local/lib/python3.11/dist-packages/wheel/bdist_wheel.py", line 368, in run\n self.run_command("build")\n File "/tmp/pip-build-env-72bewtfl/overlay/local/lib/python3.11/dist-packages/setuptools/_distutils/cmd.py", line 318, in run_command\n self.distribution.run_command(command)\n File "/tmp/pip-build-env-72bewtfl/overlay/local/lib/python3.11/dist-packages/setuptools/dist.py", line 963, in run_command\n super().run_command(command)\n File "/tmp/pip-build-env-72bewtfl/overlay/local/lib/python3.11/dist-packages/setuptools/_distutils/dist.py", line 988, in run_command\n cmd_obj.run()\n File "/tmp/pip-build-env-72bewtfl/overlay/local/lib/python3.11/dist-packages/setuptools/_distutils/command/build.py", line 131, in run\n self.run_command(cmd_name)\n File "/tmp/pip-build-env-72bewtfl/overlay/local/lib/python3.11/dist-packages/setuptools/_distutils/cmd.py", line 318, in run_command\n self.distribution.run_command(command)\n File "/tmp/pip-build-env-72bewtfl/overlay/local/lib/python3.11/dist-packages/setuptools/dist.py", line 963, in run_command\n super().run_command(command)\n File "/tmp/pip-build-env-72bewtfl/overlay/local/lib/python3.11/dist-packages/setuptools/_distutils/dist.py", line 988, in run_command\n cmd_obj.run()\n File "/tmp/pip-build-env-72bewtfl/overlay/local/lib/python3.11/dist-packages/setuptools/command/build_ext.py", line 88, in run\n _build_ext.run(self)\n File "/tmp/pip-build-env-72bewtfl/overlay/local/lib/python3.11/dist-packages/setuptools/_distutils/command/build_ext.py", line 345, in run\n self.build_extensions()\n File "", line 811, in build_extensions\n RequiredDependencyException: jpeg\n \n During handling of the above exception, another exception occurred:\n \n Traceback (most recent call last):\n File "/usr/local/lib/python3.11/dist-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in \n main()\n File "/usr/local/lib/python3.11/dist-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main\n json_out[\'return_val\'] = hook(hook_input[\'kwargs\'])\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/usr/local/lib/python3.11/dist-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 251, in build_wheel\n return _build_backend().build_wheel(wheel_directory, config_settings,\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/tmp/pip-install-bpic0rtz/pillow_2d1fcd7239e54352911a667fa71f59fb/_custom_build/backend.py", line 53, in build_wheel\n return super().build_wheel(wheel_directory, config_settings, metadata_directory)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/tmp/pip-build-env-72bewtfl/overlay/local/lib/python3.11/dist-packages/setuptools/build_meta.py", line 404, in build_wheel\n return self._build_with_temp_dir(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/tmp/pip-build-env-72bewtfl/overlay/local/lib/python3.11/dist-packages/setuptools/build_meta.py", line 389, in _build_with_temp_dir\n self.run_setup()\n File "/tmp/pip-install-bpic0rtz/pillow_2d1fcd7239e54352911a667fa71f59fb/_custom_build/backend.py", line 47, in run_setup\n return super().run_setup(setup_script)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/tmp/pip-build-env-72bewtfl/overlay/local/lib/python3.11/dist-packages/setuptools/build_meta.py", line 311, in run_setup\n exec(code, locals())\n File "", line 1005, in \n RequiredDependencyException:\n \n The headers or library files could not be found for jpeg,\n a required dependency when compiling Pillow from source.\n \n Please see the install instructions at:\n https://pillow.readthedocs.io/en/latest/installation.html\n \n \n [end of output]\n \n note: This error originates from a subprocess, and is likely not a problem with pip.\n ERROR: Failed building wheel for Pillow\nERROR: Could not build wheels for Pillow, which is required to install pyproject.toml-based projects\n'

sputnick commented 8 months ago

Works if you first do sudo apt install libjpeg-dev zlib1g-dev

CamDavidsonPilon commented 8 months ago

Ah! Yea I saw this too recently. For some reason (tbd), pip is choosing to use pypi to get the Pillow .whl file. But pypi doesn't have the .whl for Raspberry Pi architecture, so pip decides to build it locally. This fails without those dependencies.

Really the solution is to force pip to use piwheels instead of pypi, which has a .whl for pillow: https://piwheels.org/project/pillow/

The latest Pioreactor image includes checking piwheels for a arch-compatible whl, which should solve this problem (but only for new users): https://github.com/Pioreactor/CustoPiZer/commit/d5e5ab2b28f17228e5cdfa1b531a355ade60a8a6#diff-9dacf0178618be697d982e9ef964b912bac8bae4df9b7bf3994b510800d2189fR24


Along with @sputnick solution, another solution is to pre-install pillow from piwheels:

sudo pip install pillow --extra-index-url https://www.piwheels.org/simple

and then try install the plugin.