【发布时间】:2021-01-17 17:15:10
【问题描述】:
我需要确保其中一个导入的包至少是 v1.2.6。我在这里看到的所有问题都检查了 Python 运行的版本。我想检查模块的版本。
我目前的解决方案很混乱。必须有一个pythonic解决方案。
import pypfopt
ver = pypfopt.__version__
major, minor, iter = ver.split('.')
major = int(major)
minor = int(minor)
iter = int(iter)
if major < 1:
logger.error("major version less than 1")
if minor < 2:
logger.error("minor version less than 2")
if iter < 6:
logger.error("iter version less than 6")
可能重复:
虽然在 SO、1、2、3 上存在类似问题,但这些问题正在解决如何从 module.__version__ 获取和打印结果,我已经在这样做了。
我的问题是,是否有一种干净的、pythonic 的方式来检查该版本号与最低版本号。例如:
if pypfopt.__version__ < 1.2.6:
logger.error("Version is too low. Update")
但是__version__ 返回一个字符串,并且由于有两位小数(1.2.6)它不能转换为浮点数,然后进行比较。目前,我正在将每个单独的数字转换为 int,然后进行比较。
- 没有办法解决这么混乱的问题。
- 我使用 10 行来比较两个数字。
【问题讨论】:
-
我相信这种事情通常会在安装时处理。你是如何分发模块的?
-
通常我会。我们的大多数机器上都运行了旧版本,我想确保在它们中的任何一个开始运行脚本之前,它们已经更新到最新版本,因为我们需要 1.2.6 中的错误修复
-
这能回答你的问题吗? How to check version of python modules?
-
@AMC,不完全是。我能够获得版本“1.2.6”的字符串,但将每个部分转换为 int,然后根据最低版本检查它似乎很复杂。似乎有一种我不知道的pythonic方式。
-
我想这就是你要找的东西:stackoverflow.com/questions/11887762/…
标签: python