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

如何让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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 15:33:20