小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Python 開(kāi)發(fā)工具鏈全解

 進(jìn)擊的Grey 2023-11-27 發(fā)布于廣東

可能剛開(kāi)始學(xué)習(xí)Python時(shí),有人跟你說(shuō)可以將源文件所在的文件夾添加到 PYTHONPATH 環(huán)境變量中,然后可以從其他位置導(dǎo)入此代碼。在大多數(shù)情況下,這個(gè)人常常忘記補(bǔ)充這是一個(gè)非常糟糕的主意。有些人在互聯(lián)網(wǎng)上發(fā)現(xiàn)了這一點(diǎn),其他人卻要看自己付出代價(jià)后才意識(shí)到。還有太多人(特別是非程序員)真的相信除此外沒(méi)有別的辦法了。

這篇文章適用于所有類(lèi)型的 Python 學(xué)習(xí)者,因?yàn)榧词鼓阒来嬖谔娲桨福搽y以掌握。 Python的工具鏈令人困惑,因?yàn)橛性S多軟件是相互依賴的,并且它們的關(guān)注點(diǎn)也有很多重疊。很難理解它們?cè)?Python 編程體系中的定位。

出于這個(gè)原因,我決定列出最重要的工具,它們的使用場(chǎng)景和原因,以及它們解決了什么問(wèn)題。我將嘗試用簡(jiǎn)單的詞語(yǔ)解釋你應(yīng)該如何使用這些工具。如果我在本文中列出了某個(gè)工具,這意味著,作為一個(gè)Python程序員,你應(yīng)該至少知道它的存在。我將僅列出可應(yīng)用于任何項(xiàng)目或工作流的工具,每次啟動(dòng)新項(xiàng)目時(shí)都應(yīng)考慮這些工具。這并不意味著您總是必須在每個(gè)項(xiàng)目中使用它們。在某些情況下,太多的工具很容易成為一種負(fù)擔(dān),并且難以維護(hù)。

Setuptools

Setuptools是在Python中創(chuàng)建包的標(biāo)準(zhǔn)方法。它無(wú)處不在,有效并發(fā)揮了應(yīng)有的作用。

  • 用途:從源代碼構(gòu)建egg,zip或wheel文件,為項(xiàng)目定義元數(shù)據(jù),以結(jié)構(gòu)化和標(biāo)準(zhǔn)化的方式共享代碼

  • 場(chǎng)景:基本上每次你想編寫(xiě)應(yīng)該運(yùn)行在其他機(jī)器上的代碼時(shí)

  • 替代品: Poetry, Flit

virtualenv

Virtualenv是一個(gè)虛擬環(huán)境管理器。隔離的虛擬環(huán)境可以理解為“安裝了獨(dú)立包的Python版本。使用virtualenv意味著不需要(并且不應(yīng)該)使用系統(tǒng)默認(rèn)的python版本來(lái)安裝軟件包。

  • 用途:保持依賴關(guān)系分離,在同一系統(tǒng)中支持多個(gè)python版本,輕松移動(dòng)依賴關(guān)系

  • 場(chǎng)景:想寫(xiě)代碼時(shí),想使用不同于默認(rèn)版的Python版本時(shí)

  • 替代品: Docker或同等產(chǎn)品

Pip

Pip是Python最常用的包管理工具。它允許您獲取本地或遠(yuǎn)程包,并將它們安裝在虛擬環(huán)境或系統(tǒng)的Python中。

  • 用途:安裝和卸載軟件包,跟蹤正在使用的軟件包的版本

  • 場(chǎng)景:任何時(shí)候都可以使用

  • 替代品:詩(shī)歌,康達(dá)

distutils

distutils是setuptools的先驅(qū)。后者大量使用來(lái)自distutils的功能,因此很多情況下都會(huì)用到該工具。這不是你會(huì)直接選擇使用的工具,但你應(yīng)該知道它生態(tài)中的作用。

Pypi

Pypi是Python Package Index的簡(jiǎn)稱(chēng)。它存儲(chǔ)了所有你可能會(huì)用到的Python庫(kù)。Pip就是從這里獲取構(gòu)建好的包。

  • 用途:發(fā)布代碼

  • 場(chǎng)景:要公開(kāi)發(fā)布包時(shí)

Pypiserver

Pypiserver是Pypi使用的Package Index API的一個(gè)實(shí)現(xiàn)。您可以用它來(lái)配置自己的代碼庫(kù),例如為整個(gè)公司設(shè)置并在那里發(fā)布包,而不是公開(kāi)發(fā)布。

  • 用途:組織內(nèi)部共享代碼

  • 場(chǎng)景:代碼不應(yīng)公開(kāi),希望擁有控制權(quán)

  • 替代方案:Warehouse(Pypi使用的庫(kù)),djangopypi

Poetry

Poetry是也是一個(gè)包管理系統(tǒng),可以取代setuptools,pip和一些建立在它們之上的工具。這個(gè)工具,是對(duì)Python打包系統(tǒng)的一次全面重構(gòu)嘗試。到目前為止,它得到了一些支持和很多積極的反饋,但它還遠(yuǎn)遠(yuǎn)沒(méi)有成為主流選擇。

  • 用途:處理和分發(fā)包,管理依賴項(xiàng)

  • 場(chǎng)景有一個(gè)新項(xiàng)目而且不怕使用相對(duì)小眾的工具

  • 替代方案: Pipenv

Pipenv

Pipenv和 Poetry 一樣,是一種以更加理智的方式構(gòu)建Python項(xiàng)目依賴關(guān)系和配置的工具。它通過(guò) Pipfile,管理項(xiàng)目的依賴關(guān)系,并確保一致性和易用性。

  • 用途:處理和分發(fā)包,管理依賴關(guān)系

  • 場(chǎng)景:想嘗試類(lèi)似 Poetry 的工具,但希望引起更少的問(wèn)題

  • 替代方案:Poetry

Sphinx

Sphinx是構(gòu)建文檔的工具。它最初誕生的目的,是處理Python的文檔,但現(xiàn)在已經(jīng)成為了一個(gè)通用文檔工具。它仍然是Python項(xiàng)目最常見(jiàn)的文檔工具。

  • 用途:根據(jù)reStructuredText文件,生成PDF或HTML文檔

  • 場(chǎng)景:希望為項(xiàng)目提供外部文檔,API和代碼

  • 替代方案: Docutils,Doxygen

autodoc

autodoc是Sphinx的基本擴(kuò)展,允許從Python源代碼中生成restructuredText文件,其中包含每個(gè)類(lèi),函數(shù),模塊等的條目。

  • 用途:記錄代碼或API

  • 場(chǎng)景:可能每次使用Sphinx進(jìn)行項(xiàng)目時(shí)

  • 替代方案: autosummary

py.test

py.test在我看來(lái)是Python中最好的測(cè)試套件。它具有很多功能,但并非所有功能都得到充分的推廣,因此需要一些時(shí)間來(lái)發(fā)現(xiàn)該軟件支持的豐富可能性

  • 用途:測(cè)試代碼

  • 場(chǎng)景:什么場(chǎng)景下都需要用的,別犯懶

  • 替代方案: unittest,nose

Hypothesis

Hypothesis是基于屬性的測(cè)試工具。簡(jiǎn)單地說(shuō),它會(huì)根據(jù)你提供的規(guī)范生成隨機(jī)測(cè)試場(chǎng)景,直到找到導(dǎo)致測(cè)試失敗的情況。在開(kāi)始使用此工具之前,請(qǐng)花點(diǎn)時(shí)間了解背后的原理。

  • 用途:測(cè)試代碼,尤其是數(shù)據(jù)處理

  • 場(chǎng)景:需要使用各種輸入數(shù)(數(shù)字,字符串,結(jié)構(gòu)化數(shù)據(jù))測(cè)試復(fù)雜邏輯時(shí)

tox

tox本質(zhì)上是測(cè)試工作中的虛擬環(huán)境管理器。這意味著配置測(cè)試,讓其在一系列干凈,可自定義的虛擬環(huán)境中運(yùn)行,以確保代碼能夠在不同條件下工作。所有這些都不需要任何手動(dòng)處理。

  • 用途:需要在不同條件和環(huán)境中運(yùn)行的代碼。對(duì)CI也很有用。

  • 場(chǎng)景:代碼需要支持不同的Python版本,在不同的環(huán)境和不同的操作系統(tǒng)中運(yùn)行

  • 替代方案: bash scrips,CI pipeline

pyenv

pyenv是一個(gè)python版本管理器。它旨在簡(jiǎn)化開(kāi)發(fā)人員處理多個(gè)版本時(shí)的本地工作流程。

  • 用途:運(yùn)行支持不同python版本的項(xiàng)目

  • 場(chǎng)景:需要使用系統(tǒng)python版本,但是卻安裝了很多種時(shí)

  • 替代品:手動(dòng)管理,virtualenv,Poetry,Pipenv

PyScaffold

PyScaffold是一種以標(biāo)準(zhǔn)化方式初始化項(xiàng)目結(jié)構(gòu)的工具,并提供我們之前列出的一些工具,而無(wú)需手動(dòng)配置它們。它支持高度定制。

  • 用途:初始化項(xiàng)目;有多個(gè)項(xiàng)目,需要統(tǒng)一的工具和結(jié)構(gòu)

  • 場(chǎng)景:各種場(chǎng)景都可以使用(只要你熟悉工具,不要在緊急情況下去嘗試新工具)

  • 替代方案: python-project-template,Cookiecutter

flake8

flake8是Python最常用的風(fēng)格檢查工具之一。它運(yùn)行不同的腳本來(lái)驗(yàn)證代碼是否符合Python的風(fēng)格指南要求(PEP-8)。

  • 用途:驗(yàn)證并保證項(xiàng)目中良好的代碼風(fēng)格

  • 當(dāng)每次您的項(xiàng)目需要被某人閱讀時(shí),包括您自己

  • 替代方案: pylint

Black

Black是一個(gè)自動(dòng)代碼格式化工具。這意味著B(niǎo)lack不會(huì)僅僅檢查您的代碼是否合規(guī),還會(huì)實(shí)際修改它以使其符合規(guī)范。

  • 用途:自動(dòng)格式化代碼

  • 場(chǎng)景:愿意放棄手動(dòng)控制代碼風(fēng)格

  • 替代方案: autopep8,yapf

原文 | https:///chobeat/python-project-tooling-explained

-- 完 --

回復(fù)下方「關(guān)鍵詞」,獲取優(yōu)質(zhì)資源

回復(fù)關(guān)鍵詞「 pybook03」,立即獲取主頁(yè)君與小伙伴一起翻譯的《Think Python 2e》電子版

回復(fù)關(guān)鍵詞「pybooks02」,立即獲取 O'Reilly 出版社推出的免費(fèi) Python 相關(guān)電子書(shū)合集

回復(fù)關(guān)鍵詞「書(shū)單02」,立即獲取主頁(yè)君整理的 10 本 Python 入門(mén)書(shū)的電子版

印度小伙寫(xiě)了套深度學(xué)習(xí)教程,Github上星標(biāo)已經(jīng)5000+

GitHub熱榜第四!這套Python機(jī)器學(xué)習(xí)課,免費(fèi)獲取還易吸收

《流暢的 Python》到底好在哪?

如何系統(tǒng)化學(xué)習(xí) Python ?

GitHub標(biāo)星2.6萬(wàn)!Python算法新手入門(mén)大全

使用 Vue.js 和 Flask 實(shí)現(xiàn)全棧單頁(yè)面應(yīng)用

Python 實(shí)現(xiàn)一個(gè)自動(dòng)化翻譯和替換的工具

使用 Python 制作屬于自己的 PDF 電子書(shū)

12步輕松搞定Python裝飾器

200 行代碼實(shí)現(xiàn) 2048 游戲

題圖:pexels,CC0 授權(quán)。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多