如何在pyproject.toml中根据Python版本指定不同依赖文件
按Python版本指定不同依赖文件的配置方案
首先拆分不同版本的依赖文件,比如:
requirements-py27.txt:Python 2.7专属依赖requirements-py39.txt:Python 3.9专属依赖- (可选)
requirements.txt:两个版本通用的依赖
下面提供两种可行的配置方案:
方案一:直接在pyproject.toml中定义带环境标记的依赖
如果依赖项不多,可直接在配置文件里写明,无需单独的txt文件:
[project] name = "你的包名" version = "0.1.0" python = ">=2.7, <=3.9" dependencies = [ # 通用依赖 "six>=1.10.0", # Python 2.7专属依赖 "futures>=3.0.0; python_version == '2.7'", "configparser>=3.5.0; python_version == '2.7'", # Python 3.9专属依赖 "importlib-metadata>=4.0.0; python_version == '3.9'", ]
方案二:结合依赖文件与环境标记加载
若依赖项较多,仍想用txt文件管理,可按版本拆分文件后,通过setuptools的动态依赖结合条件加载:
- 准备好对应版本的依赖文件后,修改
pyproject.toml:
[project] dynamic = ["dependencies"] python = ">=2.7, <=3.9" [tool.setuptools.dynamic] dependencies = [ { file = "requirements.txt" }, { file = "requirements-py27.txt", condition = "python_version == '2.7'" }, { file = "requirements-py39.txt", condition = "python_version == '3.9'" }, ]
注意事项
- 环境标记需符合PEP 508规范,比如
python_version == '2.7'、python_version >= '3.9'等写法 - Python 2.7已停止官方维护,若不是必须尽量迁移到Python 3;若需支持,要确保所有依赖包有对应版本支持
- 安装时pip会自动根据当前Python版本匹配对应依赖项
内容的提问来源于stack exchange,提问作者Enemy
相关产品推荐
相关产品推荐

