如何确保脚本由特定版本的 python 执行? [复制]
Posted
技术标签:
【中文标题】如何确保脚本由特定版本的 python 执行? [复制]【英文标题】:How to make sure the script is executed by a specific version of python? [duplicate] 【发布时间】:2019-09-17 05:58:24 【问题描述】:正如问题所问,我想确保脚本是由特定版本的 python 执行的,比如 =>3.5.2。
如何确保脚本在执行时被特定版本调用。
这个检查应该在 python 脚本本身中完成。
如果解决方案独立于平台可能会更好。
【问题讨论】:
查看这个:***.com/questions/1093322/… @Sanyash 我想知道如果第一次错过了如何重新标记为重复。 @ayorgo 对不起,我不知道,也许你应该在 meta 上问。顺便说一句,根据我的经验,您错误的欺骗标志将被标记为有帮助,问题将被关闭。因此,您可以像以前一样编辑您的评论。 老实说,Sanyash 能够更好地理解我的问题,这是问题的正确链接。 How to make the Shebang be able to choose the correct Python interpreter between python3 and python3.5 的可能重复项。另见Any reason not to use /usr/bin/env python2/python3 explicitly? 【参考方案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 >= (3, 8)
在较旧的 python 上产生 SyntaxError: invalid syntax
,因为我使用的是海象运算符(在代码的后面很多)。
@NO_NAME 你无法避免,语法总是会在其他任何事情之前被解析和验证。【参考方案3】:
试试:
if not sys.version_info >= (3, 5, 2):
raise EnvironmentError()
或者,更好的是,一些带有有用消息的自定义异常,
【讨论】:
以上是关于如何确保脚本由特定版本的 python 执行? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 script.py 中调用特定的 Python 版本——Windows
如何确保在 Python 中一次只能由一个请求执行一段代码?