使用更新的python版本的功能(例如f字符串调试功能:)f'{some_var=}'
,结果为SyntaxError
。
假设我有一个要提供的python脚本,并且用户使用旧的python版本执行了该脚本,他将得到此错误。相反,我想给他提供一些有意义的文字,例如"Please update python to version >=3.7"
我可以用一个main
文件来解决它,该文件检查版本,然后导入我的脚本。
有没有办法实现这一目标,而仍然只有一个文件脚本?
可能的方法:
sys.version
或platfrom.python_version_tuple
->不可能,SyntaxError
麻烦了,因为python解析了整个文件SyntaxError
:->由于相同的原因不可能try:
a = "hello"
eval("f'{a=}'")
except SyntaxError:
raise ImportError('Update your Python version!!!!')
我可以以某种方式欺骗Python而不在语法上检查整个文件吗?
(我可以将整个文件“打包”成一个字符串,先检查版本,再eval
检查字符串,但这不是一个很干净的解决方案,对于开发来说很糟糕)
编辑:此问题不是关于“如何检查python版本”。相反,它是关于“SyntaxError
由于新功能,在我收到之前如何检查python版本。
我可以想到一个可能的解决方案,将整个脚本包装在三引号字符串中(您需要确保它与脚本中的三引号字符串不冲突),然后传递该脚本到exec
,就像这样:
import sys
if sys.version_info < (3, 7):
raise ImportError("I need python 3.7 or higher to run!")
exec('''
# your entire script
''')
...目前,我建议您仅使用两个文件,或者在您的网站上记录文档,或者无论语法错误在何处记录。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句