【问题标题】:How to make sure the script is executed by a specific version of python? [duplicate]如何确保脚本由特定版本的 python 执行? [复制]
【发布时间】:2019-09-17 05:58:24
【问题描述】:

正如问题所问,我想确保脚本是由特定版本的 python 执行的,比如 =>3.5.2。

如何确保脚本在执行时被特定版本调用。

这个检查应该在 python 脚本本身中完成。

如果解决方案独立于平台可能会更好。

【问题讨论】:

标签: python linux python-3.x windows


【解决方案1】:

您可以致电sys.version_info查看版本。这将为您提供sys.version_info(major=3, minor=6, micro=5, releaselevel='final', serial=0) 形式的元组。

【讨论】:

  • 我想确保被调用的python 大于提供的版本,而不是检查是否安装了python 3.6.5,是否会通过这个来完成检查?
  • 您可以将sys.version_info 的输出与您想要的进行比较。 sys.version_info 将为您提供有关当前正在运行的 python 版本的信息。
  • 例如sys.version_info.major >= 3 and sys.version_info.minor >= 5 and sys.version_info.micro >= 2(虽然这不是您想要的布尔表达式,但您仍然需要添加检查,例如 3.6.1)
  • 实际上@ruohola 的回答有更好的比较方式
【解决方案2】:

只需将其添加到脚本的开头即可:

import sys

assert sys.version_info >= (3, 5, 2), "Python version too low."

或者如果你喜欢不使用assert:

import sys

if not sys.version_info >= (3, 5, 2):
    raise EnvironmentError("Python version too low.")

或者稍微冗长一点,但这实际上会告知用户他们需要什么版本:

import sys

MIN = (3, 5, 2)
if not sys.version_info >= MIN:
    raise EnvironmentError(
        "Python version too low, required at least {}".format('.'.join(str(n) for n in MIN)))

示例输出:

Traceback (most recent call last):
  File "main.py", line 6, in <module>
    "Python version too low, required at least {}".format('.'.join(str(n) for n in MIN)))
OSError: Python version too low, required at least 3.5.2

 

指定的最小版本元组可以根据需要精确。这些都是有效的:

MIN = (3,)
MIN = (3, 5)
MIN = (3, 5, 2)

【讨论】:

  • @brunns 是的,非常正确,编辑了另一种方法。
  • 不是一个完美的测试。 assert sys.version_info &gt;= (3, 8) 在较旧的 python 上产生 SyntaxError: invalid syntax,因为我使用的是海象运算符(在代码的后面很多)。
  • @NO_NAME 你无法避免,语法总是会在其他任何事情之前被解析和验证。
【解决方案3】:

试试:

if not sys.version_info >= (3, 5, 2):
    raise EnvironmentError()

或者,更好的是,一些带有有用消息的自定义异常,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-27
    • 1970-01-01
    • 2015-01-16
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    相关资源
    最近更新 更多