如果我这样做
pip list --outdated
我得到了可升级模块的列表。例如:
Package Version Latest Type
------------------ ---------- -------- -----
aiofiles 22.1.0 23.1.0 wheel
anyio 3.6.2 3.7.0 wheel
attrs 22.2.0 23.1.0 wheel
beautifulsoup4 4.11.2 4.12.2 wheel
comm 0.1.2 0.1.3 wheel
Cython 0.29.33 0.29.35 wheel
[...]
有什么方法可以获取要安装的新版本的变更日志或相关发行说明吗?我想以编程方式获取这些,如果可能的话最好从命令行获取。
不幸的是没有。轮子中通常没有任何变更日志,只是嵌入在 Description 字段中的顶级自述文件(甚至这是可选的)。
您最好的选择是检查 Project-URL 来尝试查找变更日志,但这很难以编程方式完成,而且并非所有项目都懒得保留变更日志。
没有内置的编程方式来检索变更日志。
定义“Python 软件包元数据”的 PEP(241、314、345、566)没有为变更日志定义任何内容。由于没有标准位置,因此无法保证可以在任何给定的包中找到它。然而,有很多常见的地方值得一看。
changelogs项目试图做到这一点。正如自述文件中所述,这不是一个完美的解决方案:
当尝试获取给定包的变更日志时,存在很多问题:
- 没有存储变更日志的中心位置。如果一个项目有变更日志,它很可能位于 git 存储库中各个不同位置的某个位置。这样就很难找到了。
- 包索引元数据通常没有到 git 存储库的直接链接。这使得回购很难找到。
- 没有变更日志标准。每个人都使用不同的方法。这使得解析变得困难。
这个项目试图通过以下方式解决这个问题:
- 首先向软件包供应商查询软件包元数据,例如主页或文档 URL。
- 如果元数据不包含存储库的有效 URL,请访问所有可用 URL 并抓取它们以找到一个。
- 如果有有效的存储库 URL,请访问该存储库并查找可能的更改日志,例如 Changes.txt、NEWS.md 或 History.rst。
- 获取内容并尝试解析它。