現(xiàn)在位置:主頁 > 科技 > OpenStack Ussuri只支持Python3,你該怎么辦?

OpenStack Ussuri只支持Python3,你該怎么辦?

作者:編輯 ? 時間:2020-05-29 ? 瀏覽:人次

原標題:OpenStackUssuri只支持Python3,你該怎么辦?

在Ussuri的發(fā)布周期中,OpenStack放棄了對Python2的所有支持。所有的項目都已經(jīng)完成了CI作業(yè)的更新,使它們能在Python3下工作。這一成果使軟件能夠刪除所有Python2測試以及隨之進行的配置。

Python2->Python3

Python2.0于2000年正式發(fā)布,OpenStack于2010年成立,此后一直使用Python2.0作為基礎語言。Python基金會意識到,為了防止用戶不得不以落后或困難的方式執(zhí)行任務,需要對軟件進行大的改進。

“我們在2000年發(fā)布了Python2.0。幾年后,我們意識到需要做出重大改變來改進Python。所以在2006年,我們啟動了Python3.0。很多人沒有升級,我們也不想傷害他們。因此,多年來,我們一直在改進和發(fā)布Python2和Python3?!?/p>

2015年,Python基金會在多個平臺上非常明確地宣布,將遷移到Python3并停止使用Python2。最后期限是2020年。

OpenStack啟動對Python3的支持

很明顯,OpenStack也不能支持Python2太久了。因為不可能修復Python2上的安全漏洞,OpenStack最好完全放棄,轉(zhuǎn)而專注于Python3。

OpenStack對Python3的支持始于2013年,許多開發(fā)人員做出了貢獻。在社區(qū)付出了這么多努力之后,在Stein發(fā)布周期(2018年9月)中,社區(qū)達成共識要在Python3下運行OpenStack。這意味著許多開發(fā)人員的大量艱苦工作。

OpenStackTrain(2019年10月):默認Python3

在OpenStackTrain發(fā)行版(2019年10月)中,OpenStack默認在Python3上測試。這意味著你可以滿懷信心地將云升級到Python3環(huán)境。OpenStackTrain發(fā)布時支持經(jīng)過測試的Python3,但仍然支持Python2.7。同時,繼續(xù)測試最新的Python3版本,OpenStack技術(shù)委員會(TC)開始為每個發(fā)布周期定義測試運行時。OpenStack將在即將開始的下一個發(fā)布周期中瞄準Python3.8。

OpenStackUssuri(2020年5月):僅支持Python3,放棄Python2

在Ussuri發(fā)布周期中,OpenStack放棄了對Python2的所有支持。所有的項目都已經(jīng)完成了CI作業(yè)的更新,使它們能夠在Python3下工作。這一成果使軟件能夠刪除所有的Python2測試以及隨之而來的配置。

在Ussuri發(fā)布周期中,我們首先開始計劃放棄對Python2.7的支持。當許多項目相互依賴并集成CI/CD時,刪除Python2.7并不是一件容易的事情。例如,如果Nova放棄了對Python2.7的支持,只支持Python3,它就會打破Cinder和許多其他項目的CI/CD。我們準備了一個時間表,并將工作分為三個階段,首先放棄服務的支持,然后放棄庫或測試工具。

第一階段:Ussuri開始->Ussuri-1里程碑:要啟動的OpenStack服務放棄py2.7支持。第二階段:里程碑1->里程碑2:通用庫和測試工具

第三階段:里程碑2:最終審計。

盡管如此,在最初的工作中還是有一些東西搞砸了。因此,我們默認DevStackasPython3,這確實有幫助。在第二階段,當我們開始將Tempest和其他測試工具變成僅支持Python3時,很多原本穩(wěn)定的分支測試開始崩潰。這是顯而易見的,因為Tempest和許多其他測試工具都是無分支的,這意味著master版本將用于測試OpenStack的當前版本和舊版本。所以所有的Python2.7測試工作都在使用Tempestmaster版本。最后,在py3env上安裝的Tempest進行capping和fixing,使所有穩(wěn)定的分支和master測試通過。

就在Ussuri發(fā)布的前幾周,我們完成了這項工作,讓OpenStack只支持Python3,并更新了wiki頁面。Swift和Storlet這兩個項目將繼續(xù)支持Python2.7一到兩個周期。

“OpenStack僅支持Python3”對用戶/升級意味著什么?

如果你現(xiàn)在的云位于Python3env上,那么根本不需要擔心。如果它在Python2.7上,并且你正在升級到Ussuri,那么你需要檢查env是否有Python3.6或更高版本可用。從Ussuri版本開始,OpenStack將只在Python3.6或更高版本上工作。例如,如果你想安裝NovaUssuri版本,那么如果Python3.6或更高版本不可用,它將報錯。這是通過安裝配置文件中的元數(shù)據(jù)(“pythonrequires=>=3.6”)完成的。以下是Ussuri版本中安裝配置文件的截圖:

python-requires=>=3.6

classifier=

Environment::OpenStack

IntendedAudience::InformationTechnology

IntendedAudience::SystemAdministrators

License::OSIApproved::ApacheSoftwareLicense

OperatingSystem::POSIX::Linux

ProgrammingLanguage::Python

ProgrammingLanguage::Python::3

ProgrammingLanguage::Python::3.6

ProgrammingLanguage::Python::3.7

ProgrammingLanguage::Python::3::Only

ProgrammingLanguage::Python::Implementation::CPython

如果你使用的發(fā)行版沒有Python3.6或更高版本,則需要先升級。在Python2.7上沒有解決方法或任何兼容的方法來繼續(xù)運行OpenStack。唯一的方法就是升級Python版本。下面的FAQ部分將介紹一些關于Python升級的問題。

FAQ

Q:Python2到Python3的升級是否在上游CI/CD中測試過?

A:不是直接的,但正在間接地測試。我們沒有進行py2setup到py3setup的上游升級測試。然而,以前的OpenStack版本,如Stein和Train,都在這兩個python版本上進行了測試。如果你要將OpenStack從Stein或Train升級到Ussuri,那么應該沒有任何問題。

Q:從Ussuri到舊穩(wěn)定分支的backport變化將如何與Python2.7兼容?

A:我們?nèi)匀贿\行Python2.7作業(yè),直到進行穩(wěn)定的Train測試,這樣來自Ussuri或更高版本(僅在Python3上測試)的任何backport都將在Train或更早的穩(wěn)定分支上進行,同時也在Python2.7上測試。如果Python2.7上有任何中斷,將在backport之前修復。這樣我們就可以使Python2.7支持所有的穩(wěn)定分支。

Q:像Tempest這樣的無分支測試框架(使用master版本進行舊版本的測試)是否也能在Python2.7中繼續(xù)工作?

答:不能。我們已經(jīng)發(fā)布了最新的兼容版本Python2.7,用于Tempest和其他無分支的交付。無分支意味著工具master版本正被用來測試當前或較舊的OpenStack版本。例如,Tempest23.0.0可以用作Python2.7支持的版本,Tempest24.0.0或master只能用作Python3的。但是有一種方法可以繼續(xù)測試舊的Python2.7版本(直到你升級云并希望Tempestmaster測試云)。你可以在Python3節(jié)點或虛擬env上運行Tempest,并繼續(xù)使用主版本測試Python2.7云。只要API可以從單獨的測試節(jié)點訪問,或者虛擬envTempest正在運行,Tempest不需要與其他OpenStack服務安裝在同一個系統(tǒng)上。

https://superuser.openstack.org/articles/openstack-ussuri-is-python3-only-upgrade-impact/

轉(zhuǎn)載請保留原文鏈接:http://www.eatcooks.com/a/keji/2020/0529/47399.html上一篇:上一篇:亞信科技與中核工程、中國移動北京公司、中國移動研究院攜手共建5G智慧核工業(yè)
下一篇:下一篇:沒有了