在运行时检查Python模块的版本

19 浏览
0 Comments

在运行时检查Python模块的版本

许多第三方Python模块具有一个属性,用于保存模块的版本信息(通常是module.VERSIONmodule.__version__之类的东西),但有些模块没有。

这种模块的特例是libxslt和libxml2。

我需要在运行时检查是否使用了这些模块的正确版本。有没有方法可以做到这一点?

一种潜在的解决方案是在运行时读取源代码,对其进行哈希,然后将其与已知版本的哈希进行比较,但这很麻烦。

有更好的解决方案吗?

admin 更改状态以发布 2023年5月21日
0
0 Comments

如果你使用的是Python >=3.8,你可以使用内置库中的一个模块来进行版本检查。要检查一个包的版本(以这个例子中的lxml为例),运行以下命令:

>>> from importlib.metadata import version
>>> version('lxml')
'4.3.1'

这个功能也已经被移植到了早期版本的Python(<3.8),但你需要先安装一个单独的库:

pip install importlib_metadata

然后,要检查一个包的版本(以这个例子中的lxml为例),运行以下命令:

>>> from importlib_metadata import version
>>> version('lxml')
'4.3.1'

请注意,这仅适用于从PyPI安装的包。此外,你必须将一个包的名称作为version方法的参数,而不是这个包提供的模块的名称(虽然它们通常是相同的)。

0
0 Comments

使用pkg_resources。PyPI上安装的任何东西至少应该有一个版本号。

>>> import pkg_resources
>>> pkg_resources.get_distribution("blogofile").version
'0.7.1'

0