排版:Alan Wang
Python 憑借其簡(jiǎn)單的語(yǔ)法和強(qiáng)大的庫(kù),目前已成為最流行的編程語(yǔ)言之一,也是最適合那些剛接觸編程的人們的語(yǔ)言。但是,隨著項(xiàng)目復(fù)雜性和規(guī)模的增長(zhǎng),管理依賴項(xiàng)的復(fù)雜性也會(huì)增加。當(dāng)新用戶不斷承接更成熟的項(xiàng)目,他們同時(shí)也了解了虛擬環(huán)境和管理依賴關(guān)系的重要性。雖然 Python 中虛擬環(huán)境和庫(kù)管理的好處不可否認(rèn),但也必須承認(rèn)它們帶來(lái)的潛在挑戰(zhàn),特別是對(duì)初學(xué)者。對(duì)于那些剛接觸 Python 開發(fā)的人來(lái)說(shuō),術(shù)語(yǔ)、概念和各種可用的工具可能會(huì)讓人不知所措。
Visual Studio Code 的 Python 擴(kuò)展設(shè)置使用 Python:Create Environment 命令簡(jiǎn)化了虛擬環(huán)境的創(chuàng)建。此命令可幫助任何技能水平的開發(fā)人員創(chuàng)建隔離的環(huán)境,每個(gè)環(huán)境都有自己的一組已安裝的包和依賴項(xiàng)。我們相信,在擴(kuò)展中對(duì)包管理工具的支持方面仍有提高的空間。在高級(jí)設(shè)置上,庫(kù)管理工具簡(jiǎn)化了安裝包、解析依賴項(xiàng)和處理版本約束的過(guò)程。雖然有許多可用的包管理工具,但我們想看看在標(biāo)準(zhǔn) Python 安裝中包含的 pip
和 venv
的支持下我們可以走多遠(yuǎn)。本練習(xí)的一部分包括研究流行的庫(kù)管理工具提供的常見 CLI命令,以發(fā)現(xiàn)功能的交叉點(diǎn),并確定 pip
和 venv
在哪些方面不提供直接支持。我們希望提供一個(gè)工作流程,與 Python:Create Environment 命令來(lái)簡(jiǎn)化包管理。
目標(biāo)
作為 VS Code 的 Python 擴(kuò)展的一部分,提出并實(shí)現(xiàn)一個(gè)有主見的工作流程,來(lái)達(dá)到:
- 支持正在使用 Python 包和虛擬環(huán)境的初學(xué)者。
- 通過(guò)環(huán)境創(chuàng)建說(shuō)明簡(jiǎn)化包管理事項(xiàng)。
- 允許第三方包管理擴(kuò)展集成到工作流中以提供自己的支持。
當(dāng)前提案
VS Code 中的 Python 擴(kuò)展希望通過(guò)提供一個(gè)工作流程來(lái)解決庫(kù)管理初學(xué)者的一個(gè)常見誤區(qū),類似于 Python:Create Environment 命令中的工作流。但是,我們承認(rèn)沒有一種方法可以滿足每個(gè)用戶場(chǎng)景和偏好。最初,這些功能主要側(cè)重于幫助處理不需要構(gòu)建 wheel 文件的腳本、應(yīng)用程序和項(xiàng)目的初學(xué)者。初學(xué)者主要關(guān)心的是實(shí)現(xiàn)成功的執(zhí)行并確??芍貜?fù)性。由于 VS Code 的 Python 擴(kuò)展考慮了我們?nèi)绾谓鉀Q這個(gè)問(wèn)題,我們希望與社區(qū)概述的標(biāo)準(zhǔn)緊密結(jié)合,但在某些領(lǐng)域選擇固執(zhí)己見。我們將此建議分為兩部分進(jìn)行考慮:命令覆蓋率和記錄用戶的依賴關(guān)系。與往常一樣,我們對(duì)如何改進(jìn)和實(shí)現(xiàn)這一點(diǎn)持開放態(tài)度(vscode-python#21627)!
目前有好幾種流行的依賴項(xiàng)和包管理工具可用。在這項(xiàng)研究中,我比較了 Pip、Poetry、Hatch、conda、PDM 和 Pipenv CLI 命令,以找到它們?yōu)榘芾硖峁┑墓δ艿慕患?,以?pip
和 venv
沒有提供這些其他工具所具有的直接支持的地方。
我們希望在工作流程中匹配的 CLI 命令覆蓋范圍:
- 創(chuàng)建/更新依賴項(xiàng)文件
- 從文件讀取、解析和安裝依賴項(xiàng)
- 更新依賴項(xiàng)
- 刪除庫(kù)
- 添加庫(kù)(并更新依賴項(xiàng)文件)
- 創(chuàng)建環(huán)境
- 運(yùn)行代碼
記錄依賴關(guān)系
雖然我們概述了我們希望支持的功能,但如何寫下依賴項(xiàng)的問(wèn)題仍然存在。盡管在“何處”和“如何”寫下依賴關(guān)系背后沒有嚴(yán)格的標(biāo)準(zhǔn),但我們牢記初學(xué)者的主要?jiǎng)恿Γ撼晒Φ膱?zhí)行和可重復(fù)性。
最初,我們認(rèn)為默認(rèn)設(shè)置應(yīng)該是寫入 requirements.txt
文件,包括已安裝的庫(kù)版本。默認(rèn)情況下,選擇編寫版本支持用戶對(duì)可重復(fù)性和易于協(xié)作的需求??紤]到目標(biāo)受眾所做工作的性質(zhì)和我們的目標(biāo)用法,pyproject.toml
超出了范圍,因?yàn)槟繕?biāo)用戶通常不會(huì)構(gòu)建他們的項(xiàng)目,也沒有直接的方法只安裝 pyproject.toml
文件中列出的依賴項(xiàng)。
雖然此工作流程最初側(cè)重于幫助可能不適應(yīng)或不熟悉這些概念的初學(xué)者,但我們希望它也能成為更高級(jí)的開發(fā)人員工具。我們希望允許您首選的庫(kù)管理器通過(guò)擴(kuò)展集成到此工作流中,以支持更高級(jí)的工作流。
結(jié)論
VS Code 中的 Python 擴(kuò)展正在不斷評(píng)估我們可以改善用戶在擴(kuò)展中的體驗(yàn)的方法,無(wú)論它們是否是新的。庫(kù)管理是學(xué)習(xí)和使用 Python 時(shí)的核心基礎(chǔ),我們希望減少成功所需的障礙。與往常一樣,我們很樂(lè)意聽到您對(duì)我們功能的想法和反饋。有關(guān)此提案的具體反饋可以在 vscode-python#21627上提出。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-605925.html
CLI 命令覆蓋范圍
作為此調(diào)查的一部分,我補(bǔ)充了一個(gè)表來(lái)跟蹤跨包管理工具的 CLI 命令。此表并未說(shuō)明支持的所有命令,只包含專門與環(huán)境創(chuàng)建和包管理相關(guān)的命令。此外,下面列出的許多命令都支持用于擴(kuò)展命令功能的選項(xiàng),為了簡(jiǎn)潔起見,此處未記錄這些選項(xiàng)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-605925.html
到了這里,關(guān)于Visual Studio Code Python 擴(kuò)展中的包管理的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!