使用較新 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
提交
取消