Python 3.8已于前兩周正式發(fā)布,不過(guò)目前大多數(shù)開(kāi)發(fā)者主要使用的仍是Python 3.7.x或更舊的版本。事實(shí)上,立刻切換到使用Python 3.8可能會(huì)引發(fā)一些問(wèn)題。
想知道何時(shí)切換至Python 3.8?下文將簡(jiǎn)要概述切換主要的Python版本以及進(jìn)行切換時(shí)可能會(huì)遇到的問(wèn)題(來(lái)自一名開(kāi)發(fā)者的心得經(jīng)驗(yàn))。
1.缺少軟件包
opencv-python是一個(gè)十分受歡迎的軟件包,其下載量約為5000萬(wàn)。但正如本文提到的一樣,如果你現(xiàn)在(2019年10月28日)嘗試在Python 3.8上安裝它會(huì)發(fā)現(xiàn)并不起作用:
$ docker run python:3.8-slim pip install opencv-pythonERROR: Could not find a version that satisfies the requirement opencv-python (from versions: none)ERROR: No matching distribution found for opencv-python
原因?yàn)楹?如果我們現(xiàn)在在PyPI上訪問(wèn)opencv-python的文件頁(yè)面,將會(huì)看到?jīng)]有可用的面向Python 3.8的軟件包。晚些時(shí)候這個(gè)問(wèn)題可能會(huì)被修復(fù)。但是現(xiàn)在的情況是,在新的主要版本發(fā)布之后的不久時(shí)間內(nèi),我們將無(wú)法下載許多庫(kù)。
有時(shí)候,這些問(wèn)題只需重新構(gòu)建庫(kù)即可解決,有時(shí)候則需要進(jìn)行一些代碼調(diào)整。但不管是什么問(wèn)題,Python的主要版本和軟件包的可用性之間都存在一些滯后。
2.Python中的錯(cuò)誤
Python 3.7.0于2018年6月27日發(fā)布,3.7.1于4個(gè)月后2018年10月20日發(fā)布,其中包括許多錯(cuò)誤修正。所以按照慣例,Python 3.8將來(lái)也會(huì)有一個(gè)錯(cuò)誤修復(fù)版本,但是鑒于主要版本之間的間隔期為18個(gè)月,因此會(huì)產(chǎn)生很多新的但不會(huì)廣泛使用的代碼。這意味著后續(xù)版本將具有大量的錯(cuò)誤修復(fù)。
3.無(wú)法真正使用新的語(yǔ)法
Python 3.8引入了新語(yǔ)法,但其他工具尚未同步跟進(jìn)以支持新語(yǔ)法,例如自動(dòng)格式化程序和代碼檢測(cè)工具等。除非“配套設(shè)施”已同步更新,否則我們將無(wú)法真正使用新的語(yǔ)法。
所以什么時(shí)候切換至使用主要的新Python版本?
至少,我們需要等到:
所有的庫(kù)都明確支持新的Python版本。
所依賴的所有工具都明確支持新的Python版本。
因此,不妨在新的主要Python版本發(fā)布后等待幾個(gè)月,我們?cè)偃L試。如果確實(shí)迫不及待,可以等到第一個(gè)小版本更新發(fā)布后再嘗試,這里的情況是Python 3.8.1。