PyPI包开发疑问:如何正确配置Pillow依赖?
解决PyPI本地开发包依赖Pillow自动安装问题
你遇到的这个问题是Python包开发中很常见的配置细节问题,我来一步步帮你排查和解决:
1. 确认setup.py的install_requires配置正确性
首先检查你的setup.py是否采用标准的setuptools写法,确保install_requires里明确指定了Pillow(注意官方包名是Pillow,不是旧版的PIL)。一个规范的示例如下:
from setuptools import setup, find_packages setup( name="your-custom-package", version="0.1.0", packages=find_packages(exclude=["tests*"]), # 确保正确识别你的包目录 install_requires=[ "Pillow>=9.0.0", # 可指定最低兼容版本,也可仅写"Pillow" ], # 其他配置如author、description等按需添加 )
2. 必须添加pyproject.toml文件(关键步骤!)
从pip 21.0版本开始,Python包构建需要明确指定构建后端,缺少这个文件会导致pip无法正确解析setup.py中的依赖声明。在项目根目录创建pyproject.toml,内容如下:
[build-system] requires = ["setuptools>=61.0", "wheel"] build-backend = "setuptools.build_meta"
这个文件会告诉pip使用新版本的setuptools作为构建工具,确保依赖被正确识别并自动安装。
3. 理清install_requires与requirements.txt的分工
你提到在requirements.txt中也配置了Pillow,但两者的作用是不同的:
install_requires是包的运行时依赖,是包分发时必须声明的核心依赖,pip安装包时会自动解析并安装这些依赖。requirements.txt通常用于开发环境或部署场景,比如包含测试依赖、代码格式化工具等,pip install -e .默认不会自动读取这个文件,除非你显式指定:pip install -e . -r requirements.txt。
所以核心的依赖声明必须放在setup.py的install_requires中。
4. 清理缓存后重新测试
旧的构建缓存可能导致依赖不更新,执行以下步骤重置测试:
- 卸载已安装的Pillow:
pip3 uninstall -y Pillow - 删除项目根目录下的
your_package_name.egg-info目录(如果存在) - 重新执行本地安装:
pip3 install -e .
此时pip会重新解析你的包配置,自动安装Pillow依赖。
内容的提问来源于stack exchange,提问作者홍한석




