在运行时检查Python模块版本

问题:

许多第三方Python模块有一个属性,它保存模块的版本信息(通常类似于module.VERSIONmodule.__version__),但有些则不支持。
这些模块的具体例子是libxslt和libxml2。
我需要检查在运行时正在使用这些模块的正确版本。有没有办法做到这一点?
一个潜在的解决方案是在运行时读取源,将其哈希,然后将其与已知版本的哈希进行比较,但这是令人讨厌的。
有更好的解决方案吗?

回答:

我会远离哈希。正在使用的libxslt的版本可能包含一些类型的补丁,不会影响您的使用。
作为替代方案,我建议您不要在运行时检查(不知道这是否是硬要求)。对于我写的具有外部依赖性(第三方库)的python东西,我编写一个脚本,用户可以运行它来检查它们的python安装,以查看是否安装了适当的模块版本。
对于没有定义的“版本”属性的模块,您可以检查其包含的接口(类和方法),并查看它们是否与其期望的接口相匹配。然后在您正在处理的实际代码中,假设第三方模块具有您期望的界面。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Checking a Python module version at runtime

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

7 + 2 =