当前位置: 首页 > 面试题库 >

在运行时检查Python模块版本

鞠晋
2023-03-14
问题内容

许多第三方Python模块都有一个属性,该属性保存该模块的版本信息(通常类似module.VERSIONmodule.__version__),但有些则不然。

此类模块的特定示例是libxslt和libxml2。

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

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

有更好的解决方案吗?


问题答案:

我会远离哈希。正在使用的libxslt版本可能包含某种补丁,但不会影响您的使用。

作为一种替代方法,我建议您不要在运行时检查(不知道这是否很困难)。对于我编写的具有外部依赖性(第3方库)的python东西,我编写了一个脚本,用户可以运行该脚本来检查其python安装,以查看是否安装了适当的模块版本。

对于没有定义“版本”属性的模块,您可以检查其包含的接口(类和方法),并查看它们是否与期望的接口匹配。然后,在您正在使用的实际代码中,假定第三方模块具有您期望的接口。



 类似资料:
  • 我使用安装了Python模块和: 如何从命令行检查它们的版本?

  • 问题内容: 如何检查正在解释脚本的版本的Python Interpreter? 问题答案: 模块的字符串中提供了此信息: 可读性: 进行进一步处理: 为了确保脚本以Python解释器的最低版本要求运行,请将其添加到你的代码中: 这将比较主要版本和次要版本信息。微(=添加0,1等等),甚至的元组只要你喜欢。但是请注意,最好总是“躲避”检查某个功能是否存在,如果没有,请采取变通方法(或纾困)。有时,某

  • 本文向大家介绍在运行时检查设备上的Android版本,包括了在运行时检查设备上的Android版本的使用技巧和注意事项,需要的朋友参考一下 示例 Build.VERSION_CODES 是当前已知的SDK版本代码的枚举。 为了有条件地基于设备的Android版本运行代码,请使用TargetApi注释以避免Lint错误,并在运行特定于API级别的代码之前检查生成版本。 这是在支持低于23的API级别

  • 是否可以检查Azure中数据库运行时的版本?

  • 我的一个项目需要Java1.8,但有时我们没有注意到我们使用的是较旧的Java,所以我们会得到一些奇怪的错误。 我想在中添加检查功能,这样当我们运行任何任务时,它都会首先检查版本,并立即打印错误和退出。 我尝试在第一行的中直接添加检查,但它仍然在检查发生之前执行一些其他任务,例如(、),当我运行: 如何正确地去做?

  • 问题内容: 我需要制作一个套接字模块的副本才能使用它,并且还要对猴子的另一个套接字模块进行修补并以不同的方式使用它。 这可能吗? 我的意思是真正地复制一个模块,即在 运行时 获得与复制,将功能更改为并将其安装为扩展程序相同的结果。 问题答案: 您总是可以做一些技巧,例如导入模块,然后将其从sys.modules中删除或尝试复制模块。但是,Python已经在其标准库中提供了所需的内容。 Python