- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) >
- 什么是Python Wheels
這篇文章主要講解了“什么是Python Wheels”,文中的講解內容簡(jiǎn)單清晰,易于學(xué)習與理解,下面請大家跟著(zhù)小編的思路慢慢深入,一起來(lái)研究和學(xué)習“什么是Python Wheels”吧!
前言
Python .whl文件(或wheels)是Python中很少討論的一部分,但是它們對Python包的安裝過(guò)程非常重要。如果您已經(jīng)使用pip安裝了Python包,那么很有可能是輪子(wheels)使安裝速度更快、效率更高了。
輪子是Python生態(tài)系統的一個(gè)組件,它有助于使包的安裝工作正常進(jìn)行。它們允許更快的安裝和更穩定的包分發(fā)過(guò)程。在本教程中,您將深入了解輪子是什么,它們提供了什么好處,以及它們是如何獲得吸引力并使使用Python變得更方便的。
輪子簡(jiǎn)介
在學(xué)習如何將項目打包到輪子中之前,從用戶(hù)的角度了解使用輪子是什么樣子是很有幫助的。
可以像往常一樣在環(huán)境中安裝一個(gè)Python包來(lái)開(kāi)始這個(gè)實(shí)驗。在這種情況下,安裝uWSGI 2.0.x版本:
$ python -m pip install 'uwsgi==2.0.*' 2 Collecting uwsgi==2.0.* 3 Downloading uwsgi-2.0.18.tar.gz (801 kB) 4 |████████████████████████████████| 801 kB 1.1 MB/s 5 Building wheels for collected packages: uwsgi 6 Building wheel for uwsgi (setup.py) ... done 7 Created wheel for uwsgi ... uWSGI-2.0.18-cp38-cp38-macosx_10_15_x86_64.whl 8 Stored in directory: /private/var/folders/jc/8_hqsz0x1tdbp05 ... 9 Successfully built uwsgi 10 Installing collected packages: uwsgi 11 Successfully installed uwsgi-2.0.18
要完全安裝uWSGI, pip需要經(jīng)過(guò)幾個(gè)不同的步驟:
在第3行,它下載一個(gè)名為uwsgi-2.0.18.tar.gz的TAR文件(tarball),該文件是用gzip壓縮的。
在第6行,它接受tarball并通過(guò)調用setup.py構建一個(gè).whl文件。
在第7行,它將輪子標記為uWSGI-2.0.18-cp38-cp38-macosx_10_15_x86_64.whl。
在第10行,它在構建了輪子之后安裝實(shí)際的包。
pip檢索的tar.gz tarball是一個(gè)源分發(fā)包,或sdist,而不是一個(gè)輪子。在某些方面,sdist是輪子的反義詞。
源代碼發(fā)行版包含源代碼。這不僅包括Python代碼,還包括與包綁定的任何擴展模塊的源代碼(通常用C或c++編寫(xiě))。對于源發(fā)行版,擴展模塊是在用戶(hù)端而不是開(kāi)發(fā)人員端編譯的。
源分發(fā)版還包含一個(gè)元數據包,位于名為.egg-info的目錄中。該元數據有助于構建和安裝包,但用戶(hù)實(shí)際上并不需要使用它做任何事情。
從開(kāi)發(fā)人員的角度來(lái)看,當您運行以下命令時(shí),會(huì )創(chuàng )建一個(gè)源分發(fā)包:
$ python setup.py sdist
現在嘗試安裝一個(gè)不同的包:chardet:
$ python -m pip install 'chardet==3.*' 2 Collecting chardet 3 Downloading chardet-3.0.4-py2.py3-none-any.whl (133 kB) 4 |████████████████████████████████| 133 kB 1.5 MB/s 5 Installing collected packages: chardet 6 Successfully installed chardet-3.0.4
您可以看到一個(gè)與uWSGI安裝明顯不同的輸出。
安裝chardet時(shí)直接從PyPI下載一個(gè).whl文件。車(chē)輪名稱(chēng)為chardet-3.0.4-py2.py3-none-any。whl遵循特定的命名約定,稍后您將看到。從用戶(hù)的角度來(lái)看,更重要的是,當pip在PyPI上找到一個(gè)兼容的滾輪時(shí),并不存在構建階段。
從開(kāi)發(fā)人員的角度來(lái)看,輪子是運行以下命令的結果:
$ python setup.py bdist_wheel
為什么uWSGI給你一個(gè)源分布,而chardet提供一個(gè)輪子?您可以通過(guò)查看PyPI上每個(gè)項目的頁(yè)面并導航到下載文件區域來(lái)了解原因。本節將向您展示pip在PyPI索引上實(shí)際看到的內容:
由于項目的復雜性,uWSGI只提供了一個(gè)源分發(fā)版(uWSGI -2.0.18.tar.gz)。
chardet同時(shí)提供了一個(gè)輪盤(pán)和一個(gè)源代碼發(fā)行版,但是如果與您的系統兼容,pip會(huì )更喜歡輪盤(pán)。稍后您將看到如何確定兼容性。
另一個(gè)用于輪子安裝的兼容性檢查示例是psycopg2,它為Windows提供了大量的車(chē)輪,但沒(méi)有為L(cháng)inux或macOS客戶(hù)端提供任何輪子。這意味著(zhù),根據您的具體設置,pip安裝psycopg2可以獲取一個(gè)滾輪或源分發(fā)版。
為了避免這些類(lèi)型的兼容性問(wèn)題,一些包提供了多個(gè)輪子,每個(gè)輪子都針對特定的Python實(shí)現和底層操作系統。
到目前為止,您已經(jīng)看到了輪子和sdist之間的一些明顯區別,但更重要的是這些區別對安裝過(guò)程的影響。
輪子加速安裝
在上面,您看到了獲取預構建輪子的安裝和下載sdist的安裝的比較。輪子使得Python包的端到端安裝速度更快,原因有兩個(gè):
在其他條件相同的情況下,輪子通常比源分發(fā)包更小,這意味著(zhù)它們可以在網(wǎng)絡(luò )中更快地移動(dòng)。
直接從wheels安裝避免了從源分發(fā)版構建包的中間步驟。
幾乎可以保證,安裝chardet只需uWSGI所需時(shí)間的一小部分。然而,這是一種不公平的比較,因為chardet是一個(gè)明顯更小和更簡(jiǎn)單的包。使用不同的命令,您可以創(chuàng )建一個(gè)更直接的比較,它將演示輪子造成的差異有多大。
你可以通過(guò)-no-binary選項讓pip忽略它對車(chē)輪的傾斜:
$ time python -m pip install \ --no-cache-dir \ --force-reinstall \ --no-binary=:all: \ cryptography
這個(gè)命令計算加密包的安裝時(shí)間,告訴pip使用源分發(fā)包,即使有合適的輪可用。包括:all:使規則適用于密碼學(xué)及其所有依賴(lài)關(guān)系。
在我的機器上,從開(kāi)始到結束大約需要32秒。不僅安裝要花費很長(cháng)時(shí)間,而且構建加密還需要提供OpenSSL開(kāi)發(fā)頭,并可用于Python。
現在可以重新安裝密碼學(xué),但是這次要確保pip使用來(lái)自PyPI的wheels。因為pip更喜歡輪子,所以這類(lèi)似于完全不帶參數調用pip install。但在這種情況下,你可以讓意圖顯式通過(guò)要求車(chē)輪-純二進(jìn)制:
此選項僅花費4秒多一點(diǎn)的時(shí)間,即僅為密碼學(xué)及其依賴(lài)項使用源分發(fā)版時(shí)所用時(shí)間的八分之一。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。
Copyright ? 2009-2021 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 珠海市特網(wǎng)科技有限公司 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站