如何在GitHub Codespace中安装libtiff库?
解决GitHub Codespace安装libtiff失败的问题
问题背景
作为Python新手,我只能用浏览器版GitHub Codespace做数据评估编程(工作笔记本装不了完整VS Code)。之前解决PIL合并TIF图片体积过大的问题时,得知需要用libtiff库实现压缩,但执行pip install libtiff时直接报错,我完全摸不着头脑——既没手动装过包,也不熟悉命令行,在线环境更增加了难度。之前已经成功安装了numpy,报错详情如下:
默认使用用户安装,因为普通site-packages不可写 正在收集libtiff 使用缓存的libtiff-0.4.2.tar.gz (129 kB) 准备元数据(setup.py)...完成 为收集到的包构建wheel:libtiff 为libtiff构建wheel(setup.py)...错误 错误:subprocess-exited-with-error × python setup.py bdist_wheel运行失败。 │ 退出码:1 ╰─> [454行输出] /tmp/pip-install-el105ybn/libtiff_3c8f7be65cac4954b582e0fcd10ed845/setup.py:77: 弃用警告: `numpy.distutils` 从NumPy 1.23.0开始已被弃用,这是`distutils`本身被弃用的结果。对于Python >= 3.12,它将被移除。对于旧版本Python,它会保留。 建议这些Python版本使用`setuptools < 60.0`。 from numpy.distutils.core import setup, Extension 警告:采用默认配置(未找到libtiff/bitarray-a1646c0/bitarray/{setup_bitarray,setup}.py) 将libtiff.bitarray配置追加到libtiff 忽略尝试设置'name'(从'libtiff'改为'libtiff.bitarray') 将libtiff配置追加到 忽略尝试设置'name'(从''改为'libtiff') 0.4.2 运行bdist_wheel 运行build 运行config_cc 信息:统一config_cc、config、build_clib、build_ext、build命令——编译器选项 运行config_fc 信息:统一config_fc、config、build_clib、build_ext、build命令——fcompiler选项 运行build_src 信息:build_src 信息:构建扩展"bittools"源码 信息:构建扩展"tif_lzw"源码 信息:构建扩展"libtiff.bitarray._bitarray"源码 信息:构建扩展"libtiff.bittools"源码 信息:构建扩展"libtiff.tif_lzw"源码 信息:构建data_files源码 信息:build_src:构建npy-pkg配置文件 /usr/local/lib/python3.11/site-packages/setuptools/_distutils/cmd.py:66: Setuptools弃用警告:setup.py install已被弃用。 !! ******************************************************************************** 请避免直接运行``setup.py``。 请改用pypa/build、pypa/installer或其他基于标准的工具。 ******************************************************************************** <................ 此处省略大量输出 ..........> 信息:CCompilerOpt.cache_flush[863] : 将缓存写入路径 -> /tmp/pip-install-el105ybn/libtiff_3c8f7be65cac4954b582e0fcd10ed845/build/temp.linux-x86_64-cpython-311/cc ompiler_opt_cache_ext.py [输出结束] 注意:此错误源自子进程,可能与pip无关。 错误:构建libtiff的wheel失败 为libtiff运行setup.py clean 构建libtiff失败 错误:无法为libtiff构建wheel,这是安装基于pyproject.toml的项目所必需的
解决方法
优先选:换用活跃维护的替代库
libtiff包已经停更6年多了(最新版是2017年的0.4.2),依赖的numpy.distutils早就被弃用,自然编译失败。直接换用pylibtiff,这个库一直在更新,支持TIF压缩功能,安装零折腾:
pip install pylibtiff
它的用法和旧libtiff差不多,完全能满足TIF图片压缩合并的需求,不用纠结编译问题。
非要用旧libtiff?试试降级依赖
如果必须用原libtiff,就得把setuptools降到60.0以下,numpy降到1.23.0以下(但不推荐,容易搞乱其他包的依赖):
pip install setuptools<60.0 numpy<1.23.0 pip install libtiff
补系统依赖试试(效果有限)
有时候编译失败是缺系统级的libtiff库,先装系统依赖再试:
sudo apt-get update && sudo apt-get install libtiff-dev pip install libtiff
不过这个方法大概率解决不了旧libtiff的弃用依赖问题,还是优先换库。
内容的提问来源于stack exchange,提问作者Inselino
相关产品推荐
相关产品推荐

