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

hr0分钟

使用更新的python版本的功能(例如f字符串调试功能:)f'{some_var=}',结果为SyntaxError

假设我有一个要提供的python脚本,并且用户使用旧的python版本执行了该脚本,他将得到此错误。相反,我想给他提供一些有意义的文字,例如"Please update python to version >=3.7"

我可以用一个main文件来解决它,该文件检查版本,然后导入我的脚本。

有没有办法实现这一目标,而仍然只有一个文件脚本?

可能的方法:

  • 检查sys.versionplatfrom.python_version_tuple->不可能,SyntaxError麻烦了,因为python解析了整个文件
  • 使用eval确定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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何检查当前的tensorflow版本是否至少是python脚本中的特定版本?

执行之前检查python版本是否与脚本兼容

如何在Shell脚本中检查OpenSSL版本是否为-ge 1.1.1?

页脚中的脚本是否“阻止渲染”?

编译之前,请验证文件版本是否正确

Google Apps脚本的项目版本是否受到限制?

如何验证Selenium Python中Web元素的文本是否匹配?

使用Selenium / Python验证div中的文本是否存在问题

python脚本是否必须在AWS Lambda中命名为handler.py

如何验证Python脚本是纯数学函数?

Python的sh模块-脚本是否可以请求输入?

检查python脚本是否正在运行

检查Python脚本是否正在运行

如何检查我的脚本是否在crontab中成功运行

检查 bash 脚本是否在 bitbucket 管道中运行

检查运行脚本是否在数组中

脚本是否可以引用新记录中的行?

检测Tcl脚本是否在后台进程中运行

如何确定脚本是否在Linux或OSX中运行

Windows Server中的启动脚本是否异步运行?

如何检查 PowerShell 脚本是否在 Azure 中运行

Lua中检测脚本是否被导入或执行

将$ PATH中的python bin设置为另一个python版本是否安全?

Ubuntu 20.04中的默认Python版本是什么?

如何使用C#验证PowerShell脚本是否正在运行

不同的boto3版本是否更适合不同的Python版本?

查找语义版本是否是另一个版本python的超集

android库中的java sdk版本是否会影响使用它的项目的java版本?

Android编译版本是否应该与Eclipse中的目标版本相同?