如何在Termux上安装Pillow?

9
我使用Termux有一段时间了,想要在其中安装"Pillow"库。每当我试图使用"pip"安装Pillow时,它会显示以下错误。
起初我认为我需要升级pip,但这并没有帮助。我也尝试清除缓存,但是都没有成功。

错误信息

$ python3 -m pip install Pillow==7.2.0          Collecting Pillow==7.2.0                          Using cached Pillow-7.2.0.tar.gz (39.1 MB)    Using legacy setup.py install for Pillow, since package 'wheel' is not installed.               Installing collected packages: Pillow               Running setup.py install for Pillow ... error                                                   ERROR: Command errored out with exit status 1:                                                   command: /data/data/com.termux/files/usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/data/data/com.termux/files/usr/tmp/pip-install-48geu0sg/Pillow/setup.py'"'"'; __file__='"'"'/data/data/com.termux/files/usr/tmp/pip-install-48geu0sg/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 /data/data/com.termux/files/usr/tmp/pip-record-rstq_guv/install-record.txt --single-version-externally-managed --compile --install-headers /data/data/com.termux/files/usr/include/python3.8/Pillow                   cwd: /data/data/com.termux/files/usr/tmp/pip-install-48geu0sg/Pillow/                      Complete output (172 lines):                    running install                                 running build
    running build_py
    creating build
    creating build/lib.linux-aarch64-3.8
    creating build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/BdfFontFile.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/BlpImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/BmpImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/BufrStubImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/ContainerIO.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/CurImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/DcxImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/DdsImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/EpsImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/ExifTags.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/FitsStubImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/FliImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/FontFile.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/FpxImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/FtexImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/GbrImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/GdImageFile.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/GifImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/GimpGradientFile.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/GimpPaletteFile.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/GribStubImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/Hdf5StubImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/IcnsImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/IcoImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/ImImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/Image.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/ImageChops.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/ImageCms.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/ImageColor.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/ImageDraw.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/ImageDraw2.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/ImageEnhance.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/ImageFile.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/ImageFilter.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/ImageFont.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/ImageGrab.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/ImageMath.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/ImageMode.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/ImageMorph.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/ImageOps.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/ImagePalette.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/ImagePath.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/ImageQt.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/ImageSequence.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/ImageShow.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/ImageStat.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/ImageTk.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/ImageTransform.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/ImageWin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/ImtImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/IptcImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/Jpeg2KImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/JpegImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/JpegPresets.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/McIdasImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/MicImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/MpegImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/MpoImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/MspImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/PSDraw.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/PaletteFile.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/PalmImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/PcdImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/PcfFontFile.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/PcxImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/PdfImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/PdfParser.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/PixarImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/PngImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/PpmImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/PsdImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/PyAccess.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/SgiImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/SpiderImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/SunImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/TarIO.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/TgaImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/TiffImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/TiffTags.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/WalImageFile.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/WebPImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/WmfImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/XVThumbImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/XbmImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/XpmImagePlugin.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/__init__.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/__main__.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/_binary.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/_tkinter_finder.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/_util.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/_version.py -> build/lib.linux-aarch64-3.8/PIL
    copying src/PIL/features.py -> build/lib.linux-aarch64-3.8/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'
    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 "/data/data/com.termux/files/usr/tmp/pip-install-48geu0sg/Pillow/setup.py", line 864, in <module>
        setup(
      File "/data/data/com.termux/files/usr/lib/python3.8/site-packages/setuptools/__init__.py", line 145, in setup
        return distutils.core.setup(**attrs)
      File "/data/data/com.termux/files/usr/lib/python3.8/distutils/core.py", line 148, in setup
        dist.run_commands()
      File "/data/data/com.termux/files/usr/lib/python3.8/distutils/dist.py", line 966, in run_commands
        self.run_command(cmd)
      File "/data/data/com.termux/files/usr/lib/python3.8/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/data/data/com.termux/files/usr/lib/python3.8/site-packages/setuptools/command/install.py", line 61, in run
        return orig.install.run(self)
      File "/data/data/com.termux/files/usr/lib/python3.8/distutils/command/install.py", line 545, in run
        self.run_command('build')
      File "/data/data/com.termux/files/usr/lib/python3.8/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/data/data/com.termux/files/usr/lib/python3.8/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/data/data/com.termux/files/usr/lib/python3.8/distutils/command/build.py", line 135, in run
        self.run_command(cmd_name)
      File "/data/data/com.termux/files/usr/lib/python3.8/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/data/data/com.termux/files/usr/lib/python3.8/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/data/data/com.termux/files/usr/lib/python3.8/distutils/command/build_ext.py", line 340, in run
        self.build_extensions()
      File "/data/data/com.termux/files/usr/tmp/pip-install-48geu0sg/Pillow/setup.py", line 694, in build_extensions
        raise RequiredDependencyException(f)
    __main__.RequiredDependencyException: jpeg

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/data/data/com.termux/files/usr/tmp/pip-install-48geu0sg/Pillow/setup.py", line 918, 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


    ----------------------------------------
ERROR: Command errored out with exit status 1: /data/data/com.termux/files/usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/data/data/com.termux/files/usr/tmp/pip-install-48geu0sg/Pillow/setup.py'"'"'; __file__='"'"'/data/data/com.termux/files/usr/tmp/pip-install-48geu0sg/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 /data/data/com.termux/files/usr/tmp/pip-record-rstq_guv/install-record.txt --single-version-externally-managed --compile --install-headers /data/data/com.termux/files/usr/include/python3.8/Pillow Check the logs for full command output.

我该如何在Termux上安装Pillow?


1
它会告诉您问题所在以及获取更多信息的位置:“在从源代码编译Pillow时,找不到jpeg的头文件或库文件,这是一个必需的依赖项。请参阅https://pillow.readthedocs.io/en/latest/installation.html上的安装说明。” - CrazyChucky
@CrazyChucky兄弟,我查了互联网和其他所有的东西,但是没有得到任何帮助...我认为这是要求zlib,而在termux中目前不可用,那么该如何解决呢? - N1NG4
1
zlib 用于 PNG,libjpeg 用于 JPEG。默认情况下两者都是必需的,但你可以按照链接中的安装说明强制 Pillow 不要求其中任何一个或两个都不要求。 - CrazyChucky
1
链接的说明中提到,如果您无法安装libjpeg,则需要使用--disable-jpeg标志构建Pillow。 - CrazyChucky
1
另一方面,如果您已经安装了库但pip找不到它,可能只是在错误的位置查找头文件:https://github.com/python-pillow/Pillow/issues/1957(这是在谷歌搜索“pillow termux”时的第一个结果。) - CrazyChucky
https://wiki.termux.com/wiki/Image_Editors#Python - phd
2个回答

21

首先从pypi下载wheel模块

pip install wheel

然后安装libjpeg-turbo包。

pkg install libjpeg-turbo

现在使用以下命令安装Pillow

LDFLAGS="-L/system/lib/" CFLAGS="-I/data/data/com.termux/files/usr/include/" pip install Pillow

注意: 如果您正在使用 aarch64 设备,请将 LDFLAGS 标志设置为 "-L/system/lib64/"

相关链接:在 Termux 中安装 Pillow - Termux Wiki


哇...非常感谢你。 - kanha.vishva
你好。你安装了哪个版本的 Pillow? 当我尝试安装它时,我遇到了以下错误: ld.lld: error: /system/lib/libdl.so is incompatible with aarch64linux; ld.lld: error: /system/lib/libc.so is incompatible with aarch64linux; ld.lld: error: /system/lib/libdl.so is incompatible with aarch64linux; - Koli96
和 @Koli96 一样的错误,有解决方案吗? - Catfoxes
4
请尝试使用以下命令安装Pillow:LDFLAGS="-L/system/lib64/" CFLAGS="-I/data/data/com.termux/files/usr/include/" pip install Pillow。这个命令会设置一些参数来确保正确的安装。 - Koli96
是的,它可以在基于aarch64的设备上运行。 - Koli96
1
完成前两个步骤后,它就可以正常工作了,不需要第三个步骤。之后按照要求文件中的内容正常安装了Pillow。 - Brambor

0
pkg install -y python ndk-sysroot clang make \ libjpeg-turbo

1
欢迎来到Stack Overflow!虽然这段代码可能解决了问题,但是包括解释它如何以及为什么解决了问题将有助于提高您的帖子质量,并可能导致更多的赞。请记住,您正在回答未来读者的问题,而不仅仅是现在提问的人。请[编辑]您的答案以添加解释并指出适用的限制和假设。 - Yunnosch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接