如何让Poetry可靠安装setuptools以运行旧版jenkins-job-builder?
问题详情
- 运行旧版jenkins-job-builder 4.3(无法升级)时触发错误:
ERROR:stevedore.extension:Could not load '<command>': No module named 'pkg_resources' - 确认
pkg_resources属于setuptools,但在pyproject.toml的[tool.poetry.dependencies]中添加setuptools = "*"后,出现版本解析失败:Because <project> depends on setuptools (*) which doesn't match any versions, version solving failed. - 测试中还碰到版本冲突:jenkins-job-builder 4.3.0的METADATA要求
setuptools<=65.7.0,但环境中安装的是69.5.1,报错如下:pkg_resources.VersionConflict: (setuptools 69.5.1 (/github/home/.cache/pypoetry/virtualenvs/.../lib/python3.10/site-packages), Requirement.parse('setuptools<=65.7.0')) - 当前环境:GHA runner,Python 3.12,使用Python 3.10.12安装的Poetry 1.8.2;本地Python 3.10环境可正常运行jenkins-jobs。
解决方法
1. 指定符合限制的setuptools版本
别用*通配符,直接在pyproject.toml的[tool.poetry.dependencies]里添加符合jenkins-job-builder要求的版本范围:
setuptools = "<=65.7.0"
这样Poetry能直接匹配到合规版本,避免解析失败。
2. 锁定具体版本(解析仍有问题时用)
如果Poetry还是搞不定版本解析,直接指定具体版本(比如jenkins-job-builder允许的最高版本65.7.0):
setuptools = "65.7.0"
然后执行poetry lock --no-update生成锁定文件,确保安装时用这个版本。
3. 切换GHA的Python版本到3.10
本地Python 3.10能正常跑,说明这个版本和jenkins-job-builder 4.3兼容性更好。在GHA的Workflow里改成用Python 3.10:
steps: - uses: actions/setup-python@v5 with: python-version: '3.10'
同时让Poetry用这个环境:执行poetry env use python3.10指定虚拟环境的Python版本。
4. 手动安装指定版本的setuptools(应急方案)
如果上面的方法都不行,在Poetry安装完依赖后,手动进入虚拟环境安装合规版本:
poetry run pip install setuptools==65.7.0
这个方法能绕过Poetry的版本解析逻辑,直接强制安装符合要求的版本。
5. 检查Poetry配置
确保Poetry的虚拟环境配置正常,执行poetry config --list查看,确认virtualenvs.create设为true,避免用系统Python环境里的冲突版本。
内容的提问来源于stack exchange,提问作者Matthew
相关产品推荐
相关产品推荐

