在执行之前检查python版本是不是与脚本兼容[重复]

Posted

技术标签:

【中文标题】在执行之前检查python版本是不是与脚本兼容[重复]【英文标题】:Check if python version is compatible with script before executing [duplicate]在执行之前检查python版本是否与脚本兼容[重复] 【发布时间】:2021-04-11 06:41:25 【问题描述】:

我有一个使用 Python 2.7 编写的 Python 脚本。然而,它将被部署到许多不同的服务器上,其中一些正在运行 Python 2.4。在这种情况下,我很高兴脚本根本不在运行 Python 2.4 的服务器上运行。有没有办法可以在我的 Python 脚本中执行此操作,或者最好在脚本周围放置一个包装器?

我试过这样做:

if sys.version_info[0] < 2.7:
    raise Exception("Python 2.7 or a more recent version is required.")

但是,由于 Python 在运行之前编译代码,因此在编译期间遇到在 2.4 中不起作用的部分脚本时会失败。

【问题讨论】:

不部署到不支持 Python 2.7 的服务器怎么办? 这能回答你的问题吗? How do I check what version of Python is running my script? 您的服务器急需升级。非常强烈的建议升级到 Python 3.6+。 Python 2.7 达到了EOL one year ago,而 Python 2.4 .. 好吧,很久以前了。 【参考方案1】:

sys.version_info[0] 仅是主要版本。因此,对于所有 python 2.x 版本,它将是 2。您正在寻找sys.version_info[1],带有次要版本:

# check for python 2
if sys.version_info[0] != 2:
    raise Exception("Please use Python 2")
# check for 2.7+
if sys.version_info[1] < 7:
    raise Exception("Please use Python 2.7+")

或者,对于更具描述性的命名,您可以使用sys.version_info.major 代替sys.version_info[0]sys.version_info.minor 代替sys.version_info[1]

此外,请确保将其添加到脚本顶部附近,以便在命中该行并引发异常之前不存在不兼容性。

如果您的代码使用不兼容的语法,那么您应该将非版本检查代码放在一个单独的文件中的 main 函数中,然后在检查后将其导入,这样 Python 就不会尝试解析它。

【讨论】:

以上是关于在执行之前检查python版本是不是与脚本兼容[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在插入之前检查 DataGridview 中的值是不是与数据库表/模式兼容

ajax 在运行脚本之前检查用户是不是登录

检查 iOS 版本是不是与 PHP 兼容,从 iOS 3.0 到 IOS 4.0 或更高版本

python3--命令行执行加参数

想要通过将输出重定向到变量来检查命令是不是成功

如何在创建存储过程之前检查它是不是存在