問(wèn)題:有些使用體驗(yàn)太過(guò)復(fù)雜——對(duì),說(shuō)的就是為專業(yè)級(jí)Python項(xiàng)目設(shè)置工作區(qū)、目錄結(jié)構(gòu)與基本架構(gòu);管理與項(xiàng)目相關(guān)的環(huán)境、軟件包及依賴項(xiàng);以可重復(fù)方式重新分配項(xiàng)目來(lái)源;并一次又一次不斷進(jìn)行這個(gè)過(guò)程。
Rust與Go這兩種語(yǔ)言,在初始設(shè)計(jì)階段就強(qiáng)調(diào)提供一種單一且規(guī)范的項(xiàng)目設(shè)置方式,并允許開(kāi)發(fā)者在整個(gè)生命周期之內(nèi)對(duì)其進(jìn)行輕松管理。Rust與Go開(kāi)發(fā)人員雖然因此犧牲掉了一定程度的靈活性,但卻換來(lái)了良好的一致性、可預(yù)測(cè)性以及可管理性。
Python提供的安裝、軟件包以及項(xiàng)目管理工具與方法,隨著時(shí)間推移而不斷積壓,并成為30年發(fā)展周期中的一筆重大負(fù)擔(dān)。其中有用于軟件包管理的pip、用于創(chuàng)建虛擬環(huán)境的venv/virtualenv、用于元管理的virtualenvwrapper與Pipenv、用于生成項(xiàng)目依賴性的pip-tools、以及用于創(chuàng)建Python代碼發(fā)行版的distutils與setuptools等。此外,還有負(fù)責(zé)定義項(xiàng)目其它部分的setup.py、requirements.txt、setup.cfg、MANIFEST.in以及Pipfile等等。
解決方案:同樣的,我們需要取代這如同一團(tuán)亂麻的工具與流程大雜燴,由Python核心開(kāi)發(fā)團(tuán)隊(duì)拿出一套規(guī)范性的解決方案,同時(shí)確保其能夠優(yōu)雅地遷移一切利用現(xiàn)有方法開(kāi)發(fā)出的項(xiàng)目。當(dāng)然,這是個(gè)很難解決的挑戰(zhàn),但隨著Python語(yǔ)言變得越來(lái)越重要,我們必須努力讓它成為一款易于上手、維護(hù)簡(jiǎn)單、一致性強(qiáng)且友好舒適的編程工具。
目前這方面工作已經(jīng)有所進(jìn)展。根據(jù)PEP518提案,Python的build依賴項(xiàng)被合并為pyproject.toml文件格式。而像poetry這樣的第三方工具雖然只能打包現(xiàn)有工具,但已經(jīng)體現(xiàn)出一體化管理產(chǎn)品的樣貌。隨著時(shí)間的推移,其中一種解決方案也許會(huì)脫穎而出、受到整個(gè)社區(qū)的關(guān)注,并成為客觀層面甚至是范式性的處理標(biāo)準(zhǔn)。
以上內(nèi)容為大家介紹了python安裝、軟件包與項(xiàng)目管理,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://m.2667701.com/