如何让Poetry检查自定义源mysource中已安装包的更新?
问题描述
我有两个包:
- package1
- package2
我从自定义源安装它们,pyproject.toml配置如下:
[tool.poetry.dependencies] package1 = { version = "==2.0.2", source = "mysource" } package2 = {version = "==0.2.0", source = "mysource"} [[tool.poetry.source]] name = "mysource" url = "https://example.com/mysource/simple/" priority = "explicit"
这两个包在pypi.org也有提供。当我运行poetry show --outdated命令检查过时包时,输出的是和PyPI上的版本对比结果:
$ poetry show --outdated package1 2.0.2 28.0.0 description of package package2 0.2.0 5.8.0 description of package
这不符合我的需求——我希望对比自定义源mysource中的版本,而不是PyPI的。另外我不想把mysource的优先级改为primary,因为这样会导致运行速度变慢。请问如何检查从mysource安装的包是否过时?期望输出类似:
$ poetry show --outdated package1 2.0.2 2.0.3 description of package package2 0.2.0 0.2.1 description of package
解决方案
方法1:用--only+--source限定源
Poetry的show --outdated命令支持通过参数限定检查范围,直接指定只关联mysource的包,并仅从该源拉取版本信息:
poetry show --outdated --only mysource --source mysource
这个命令会跳过PyPI,只对比mysource中的最新版本,不会影响原有配置的优先级。
方法2:临时调整源优先级(单次生效)
如果方法1不生效,可以临时设置mysource的查询优先级,单次运行检查命令,不会修改pyproject.toml:
# 临时设置源优先级为explicit poetry config installer.priority explicit # 指定源检查过时包 poetry show --outdated --source mysource # 检查完成后恢复原有配置(可选) poetry config --unset installer.priority
方法3:单个包版本验证
针对单个包,可以用add命令结合--dry-run模拟安装,查看该源下的最新版本:
poetry add package1@latest --source mysource --dry-run
--dry-run会输出该源下的最新版本号,但不会实际修改项目依赖。
内容的提问来源于stack exchange,提问作者Cool Breeze
相关产品推荐
相关产品推荐

