使用較新 python 版本的功能,例如 f-string debugging feature: f'{some_var=}',結(jié)果為SyntaxError.假設(shè)我有一個(gè)我想提供的 python 腳本,并且用戶(hù)使用舊的 python 版本執(zhí)行所述腳本,他只會(huì)得到這個(gè)錯(cuò)誤。相反,我想為他提供一些有意義的文字,例如"Please update python to version >=3.7"我可以用一個(gè)main文件來(lái)解決它,它檢查版本然后導(dǎo)入我的腳本。有沒(méi)有辦法實(shí)現(xiàn)這一點(diǎn),同時(shí)仍然只有一個(gè)文件腳本?可能的方法:檢查sys.version或platfrom.python_version_tuple -> 不可能,SyntaxError妨礙,因?yàn)?python 解析整個(gè)文件使用 eval 來(lái)確定SyntaxError: -> 出于同樣的原因不可能try:
a = "hello"
eval("f'{a=}'")
except SyntaxError:
raise ImportError('Update your Python version!!!!')我可以以某種方式欺騙 Python 不在語(yǔ)法上檢查整個(gè)文件嗎?(我可以將整個(gè)文件“打包”成一個(gè)字符串,檢查版本,然后檢查eval字符串,但這不是一個(gè)非常干凈的解決方案,而且對(duì)開(kāi)發(fā)來(lái)說(shuō)很糟糕)編輯:這個(gè)問(wèn)題不是關(guān)于“如何檢查 python 版本”。相反,它是關(guān)于“如何在我收到新功能之前檢查 python 版本SyntaxError。
1 回答

拉風(fēng)的咖菲貓
TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊
我可以想到一個(gè)可能的解決方案,將整個(gè)腳本包裝在一個(gè)三引號(hào)字符串中(您需要確保它不會(huì)與腳本中的任何三引號(hào)字符串沖突),然后傳遞,像exec這樣:
import sys
if sys.version_info < (3, 7):
raise ImportError("I need python 3.7 or higher to run!")
exec('''
# your entire script
''')
... 在這一點(diǎn)上,我建議要么只使用兩個(gè)文件,要么在您的網(wǎng)站上記錄,或者在語(yǔ)法錯(cuò)誤意味著什么的任何地方記錄。
添加回答
舉報(bào)
0/150
提交
取消