为了账号安全,请及时绑定邮箱和手机立即绑定

验证脚本中的 python 版本被 SyntaxError 停止

验证脚本中的 python 版本被 SyntaxError 停止

暮色呼如 2023-03-22 10:42:22
使用较新 python 版本的功能,例如 f-string debugging feature: f'{some_var=}',结果为SyntaxError.假设我有一个我想提供的 python 脚本,并且用户使用旧的 python 版本执行所述脚本,他只会得到这个错误。相反,我想为他提供一些有意义的文字,例如"Please update python to version >=3.7"我可以用一个main文件来解决它,它检查版本然后导入我的脚本。有没有办法实现这一点,同时仍然只有一个文件脚本?可能的方法:检查sys.version或platfrom.python_version_tuple -> 不可能,SyntaxError妨碍,因为 python 解析整个文件使用 eval 来确定SyntaxError: -> 出于同样的原因不可能try:      a = "hello"      eval("f'{a=}'")  except SyntaxError:      raise ImportError('Update your Python version!!!!')我可以以某种方式欺骗 Python 不在语法上检查整个文件吗?(我可以将整个文件“打包”成一个字符串,检查版本,然后检查eval字符串,但这不是一个非常干净的解决方案,而且对开发来说很糟糕)编辑:这个问题不是关于“如何检查 python 版本”。相反,它是关于“如何在我收到新功能之前检查 python 版本SyntaxError。
查看完整描述

1 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

我可以想到一个可能的解决方案,将整个脚本包装在一个三引号字符串中(您需要确保它不会与脚本中的任何三引号字符串冲突),然后传递,像exec这样:


import sys

if sys.version_info < (3, 7):

    raise ImportError("I need python 3.7 or higher to run!")

exec('''

# your entire script

''')

... 在这一点上,我建议要么只使用两个文件,要么在您的网站上记录,或者在语法错误意味着什么的任何地方记录。


查看完整回答
反对 回复 2023-03-22
  • 1 回答
  • 0 关注
  • 80 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信