使用较新 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
''')
... 在这一点上,我建议要么只使用两个文件,要么在您的网站上记录,或者在语法错误意味着什么的任何地方记录。
添加回答
举报
0/150
提交
取消