pip更新默认解析器后如何快速查询包可用版本(支持私有源)
pip新版解析器下查询包全量可用版本的替代方案
问题背景
在pip解析器完成对应变更(关联官方仓库issue #9187)之前,开发者可通过执行pip install foo==命令快速查询指定软件包的全量可用版本,典型执行效果如下:
旧版遗留解析器执行输出
% pip install hydra-core== --use-deprecated=legacy-resolver Looking in indexes: https://pypi.org/simple ERROR: Could not find a version that satisfies the requirement hydra-core== (from versions: 0.1.4, 0.1.5rc1, 0.1.5, 0.9.0, 0.10.0, 0.11.0rc1, 0.11.0, 0.11.1rc1, 0.11.1, 0.11.2rc1, 0.11.2, 0.11.3, 1.0.0rc1, 1.0.0rc2, 1.0.0rc3, 1.0.0rc4, 1.0.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.6, 1.1.0.dev1, 1.1.0.dev2, 1.1.0.dev3, 1.1.0.dev4) ERROR: No matching distribution found for hydra-core==
目前pip默认启用新版解析器后,上述查询方法已完全失效,无版本枚举输出,对应执行效果如下:
新版默认解析器执行输出
% pip install hydra-core== Looking in indexes: https://pypi.org/simple ERROR: Could not find a version that satisfies the requirement hydra-core== ERROR: No matching distribution found for hydra-core==
适配双场景的替代查询方案
以下所有方案会自动继承pip全局配置的源地址,无需单独配置,可同时覆盖PyPI公共源、开发者私有软件仓库的版本检索需求:
- 临时启用遗留解析器复现旧逻辑
原查询命令追加--use-deprecated=legacy-resolver参数,即可输出和旧版一致的版本列表,适合无额外调整需求、想沿用原操作习惯的场景。 - 使用pip官方内置的版本查询子命令
执行pip index versions <目标包名>,这是pip针对版本查询场景专门提供的官方功能,会直接输出当前配置源下指定包的所有可用版本,输出结果清晰无冗余报错。 - 低版本pip兼容方案
针对没有内置pip index子命令的旧版本pip,可执行pip download <目标包名>== --no-deps --dry-run,通过空版本约束触发解析器枚举全量版本列表。
提示:所有方案的源匹配逻辑和pip安装包的逻辑完全一致,不会出现公共源能查、私有源查不到的适配问题。
内容的提问来源于stack exchange,提问作者Ken Williams
相关产品推荐
相关产品推荐

