Poetry配置无效:'group'未预期的属性
WARNING
关键错误信息RuntimeError: The Poetry configuration is invalid: Additional properties are not allowed ('group' was unexpected)
当看到此错误时,说明您的Poetry版本已过时
问题原因
此错误直接指向Poetry版本兼容性问题:
- 项目中的
pyproject.toml
使用了依赖分组(group)功能(仅Poetry 1.2.0+支持) - 您本地的Poetry版本低于
1.2.0
(通常是1.1.x版本) - 旧版本Poetry无法解析新增配置项,引发验证失败
依赖分组功能示例(新版本语法):
toml
[tool.poetry.group.dev] # 旧版Poetry无法识别此语法
optional = false
[tool.poetry.group.dev.dependencies]
pytest = "^7.0"
解决方案
方法一:升级Poetry(推荐)
适用于通过pip安装的Poetry
bash
# 卸载旧版本
rm -rf ~/.poetry # 移除Poetry配置缓存
# 升级核心库
pip install --upgrade pip setuptools
# 安装最新Poetry
pip install --user poetry -U
powershell
# 清除旧数据
Remove-Item -Recurse -Force $env:APPDATA\pypoetry
# 更新安装工具
python -m pip install --upgrade pip setuptools
# 安装最新版
pip install --user poetry -U
bash
poetry --version # 应显示 Poetry (version 1.8.x)
poetry install # 重新安装项目依赖
方法二:使用pipx安装(官方推荐)
适用全新安装或解决环境冲突
- 安装pipx(若未安装)
bash
sudo apt update
sudo apt install pipx
pipx ensurepath
- 通过pipx安装Poetry
bash
pipx install poetry # 隔离环境安装
- 验证安装
bash
which poetry # 应显示pipx路径
poetry --version
方法三:解决环境冲突问题
特别针对conda/anaconda用户
bash
conda deactivate # 退出可能冲突的conda环境
poetry install # 在基础环境重试
操作后必做
强制重建依赖锁
执行以下操作保证依赖解析正确:
bash
rm poetry.lock # 删除旧锁文件
poetry install --no-root # 重新生成锁文件
补充:解决相关错误 data.source[0] must not contain {'secondary'}
若遇到此错误同样源于版本不兼容:
- 从
pyproject.toml
中移除所有secondary = true
- 删除
poetry.lock
文件 - 按上述方法升级Poetry
- 执行
poetry install --no-root
附加说明
版本选择建议
环境 | 推荐操作 |
---|---|
多环境项目 | pipx install poetry |
Docker容器 | pip install poetry=1.8.3 |
Windows系统 | 官方安装脚本+PowerShell执行 |
疑难排查
- 持续出现错误时运行:bash
poetry config --list # 检查配置状态 poetry debug info # 显示环境信息
- 项目包含旧版配置时:
- 将
requires = ["poetry-core>=1.2.0"]
加入pyproject.toml
- 删除项目虚拟机(
rm -rf .venv
)后重装
- 将
TIP
官方升级参考
详细迁移指南可查阅:Poetry 1.2发布公告
对于团队项目,建议在CONTRIBUTING.md中声明Poetry版本要求
遵循上述操作后,依赖分组功能即可正常使用:
toml
[tool.poetry.group.lint]
optional = true
[tool.poetry.group.lint.dependencies]
flake8 = ">=6.1.0"
black = { version = "23.7.0", allow-prereleases = true }