有没有办法在不抓取的情况下从 PyPI 访问搜索结果?

Joe*_*oey 3 python pip pypi python-3.x

我正在开发用于管理 Python 虚拟环境的 GUI。到目前为止,我能够实现我想提供给用户的大部分功能。但我坚持一件事:

在创建虚拟环境时,用户可以根据需要将软件包安装到其中。为此,我想让他们像pip search <package>从命令行一样执行搜索。结果将显示在表格视图中。我的问题是我不确定获得搜索结果的最佳方式是什么。

我尝试使用内置模块subprocesspip search使用结果填充表格。这是可能的,但是它很棘手,因为我必须首先格式化输出(包名称、版本、描述)以适应表格。

因为这需要很多嵌套循环和字符串操作,所以我寻找一种直接访问数据的方法,理想情况下无需抓取Python Package Index


编辑:

我考虑过使用 PyPI 的XML-RPC API,但有一个说明,它将来会被弃用,不推荐使用,所以我不确定是否应该在我的项目中使用它。

XML-RPC API 将来会被弃用。不建议使用此 API,该 API 的现有使用者应迁移到 RSS 和/或 JSON API。

当我们开始从 PyPI 中删除 XML-RPC 的过程时,强烈鼓励此 API 的用户订阅 pypi-announce 邮件列表以获取通知。

是否有另一种方法可以从 PyPI 获取搜索结果,或者目前只有 XML-RPC API?

Ant*_*ala 5

XML-RPC 搜索端点在 2020 年 12 月中旬被暂时禁用,因为搜索端点的请求负载不断增加。截至目前,目前根本无法使用 API 在 pypi.org 上搜索包。

  • 它于 2021 年 3 月 24 日被永久禁用,因为即使被禁用,一些第三方(第三方?)仍然继续滥用它,甚至在其暂时禁用 100 天后每分钟发送数百个请求。所以这就是为什么我们不能拥有美好的东西。非常难过。 (3认同)