You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为sigfig包的用户与贡献者指定不同Python版本?

解决Poetry构建包时Python版本声明错误的问题

问题背景

使用poetry run python -m build构建sigfig包时,生成的PKG-INFO元数据中Python版本要求为>=3.11,但实际包支持低至Python 3.6的版本,3.11仅为开发环境的要求,并非用户核心依赖。此前尝试的两种配置方式均失败:

  • 在[tool.poetry]节添加requires-python = ">=3.6",构建时提示配置无效
  • 在[tool.poetry.dependencies]设置python = "^3.6",同时在[tool.poetry.group.dev.dependencies]设置python = "^3.11",执行poetry lock时出现依赖兼容性错误

正确解决方案

1. 正确声明核心Python版本依赖

Poetry要求全局Python版本约束必须放在[tool.poetry.dependencies]的python字段下,这一配置会同步到包的发布元数据(PKG-INFO)中,让pip正确识别包支持的Python版本范围。

在pyproject.toml中添加如下配置:

[tool.poetry.dependencies]
python = ">=3.6,<4.0"
# 其他核心业务依赖...

2. 单独管理开发环境的Python版本要求

禁止在开发依赖组中重复定义python约束(Poetry不允许重复声明全局依赖约束),开发环境的Python 3.11要求可以通过以下方式实现:

  • 本地开发时,执行poetry env use 3.11强制使用指定版本的Python,该设置仅作用于本地开发环境,不会影响包的发布元数据
  • 在项目文档(如README.md)中明确说明开发环境需要Python 3.11,引导贡献者使用对应版本
  • 若需自动化检查开发环境版本,可添加pre-commit钩子或自定义脚本验证Python版本

完整配置示例片段

[tool.poetry]
name = "sigfig"
version = "1.0.0"
description = "Your package description here"
authors = ["Your Name <your.email@example.com>"]

[tool.poetry.dependencies]
python = ">=3.6,<4.0"
# 添加你的核心依赖,比如:
# numpy = "^1.19"

[tool.poetry.group.dev.dependencies]
# 添加开发依赖,无需声明python约束
pytest = "^7.4"
black = "^23.7"
flake8 = "^6.0"

验证效果

执行poetry run python -m build构建包后,查看生成的dist/sigfig-x.y.z.tar.gz中的PKG-INFO文件,Requires-Python字段应显示为>=3.6,<4.0,此时pip会正确识别包支持Python 3.6及以上版本。


内容的提问来源于stack exchange,提问作者HyperActive

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 03:23:20