亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

驗證腳本中的 python 版本被 SyntaxError 停止

驗證腳本中的 python 版本被 SyntaxError 停止

暮色呼如 2023-03-22 10:42:22
使用較新 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

''')

... 在這一點上,我建議要么只使用兩個文件,要么在您的網站上記錄,或者在語法錯誤意味著什么的任何地方記錄。


查看完整回答
反對 回復 2023-03-22
  • 1 回答
  • 0 關注
  • 105 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號