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

如何获取Jfrog Artifactory远程仓库已缓存的Python包及版本列表

解决方案

方法1:使用文件列表API直接遍历缓存目录(最简方案)

直接调用Artifactory的存储文件列表接口,仅拉取PyPI类型远程仓库已缓存的包文件:

  • 接口请求格式:GET /api/storage/{你的Python远程仓库名}/.pypi/?list&deep=1&listFolders=0
    说明:.pypi是Artifactory存储PyPI包的默认根目录,deep=1限定只遍历到包名+版本的层级,listFolders=0过滤掉空目录,只返回实际存在的包文件。
  • 返回结果的files字段中,每一项的uri格式为/{包名}/{包名}-{版本}.whl或/{包名}/{包名}-{版本}.tar.gz,直接拆分uri即可提取对应的包名和已缓存的版本号,如果同一个版本对应多种包格式(whl、tar.gz),去重后即可得到该包的已缓存版本列表。

方法2:使用AQL查询(灵活可扩展)

如果需要附加过滤条件(比如仅查询指定时间范围内缓存的包),可以用Artifactory查询语言实现更灵活的检索:

  • 接口请求格式:POST /api/search/aql
  • 请求体参考:
items.find(
    {
        "repo": "{你的Python远程仓库名}",
        "path": {"$match": ".pypi/*"},
        "name": {"$match": "*.whl|*.tar.gz|*.zip"}
    }
).include("path","name")
  • 返回结果中path字段为.pypi/{包名},拆分即可得到包名,name字段为包的完整文件名,拆分即可得到版本号。

通用注意事项

  • 调用接口前需要在请求头中带上有对应仓库读取权限的身份凭证,比如API Key或者Bearer Token。
  • 两种方案查询的都是已经存储到本地Artifactory缓存中的文件,不会请求上游仓库拉取全量可用版本,完全符合你的需求。

内容的提问来源于stack exchange,提问作者Naresh Babu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:45:09