Pythonwheel文件詳細介紹_第1頁
Pythonwheel文件詳細介紹_第2頁
Pythonwheel文件詳細介紹_第3頁
Pythonwheel文件詳細介紹_第4頁
Pythonwheel文件詳細介紹_第5頁
已閱讀5頁,還剩1頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第Pythonwheel文件詳細介紹目錄1.wheel介紹2.wheel的類型3.創建wheel4.導入使用wheel

1.wheel介紹

.whl文件(WHLfile)也稱為輪子(wheel),這是用于python分發(distribution)的標準內置包格式(standardbuilt-packageformat)。它包含安裝所需的所有文件和元數據(metadata)。.whl文件使用zip進行壓縮。.whl文件還包含有關此wheel文件支持的Python版本和平臺的信息。.whl文件格式是一種即裝即用格式(ready-to-installformat),允許在不構建源代碼分發(withoutbuildingthesourcedistribution)的情況下運行安裝包。

.whl文件本質上是zip文件,這些.whl文件可以使用解壓縮選項(unzipoption)或標準解壓縮軟件應用程序(如WinZIP和WinRAR)解壓縮。

.whl文件按照以下約定命名:

{dist}-{version}(-{build})-{python.version}-{abi}-{platform}.whl

如果我們之前使用pip安裝過Python包,那么我們的系統上很可能已經有輪子(wheel)被安裝過。pip是安裝wheel的包管理器。

我們可以通過pip安裝已下載的.whl文件:pipinstallfilename.whl,安裝包后,我們可以執行Pythonshell并嘗試導入包:importwhl_dist_name

wheel的直接好處是我們與其他人共享我們的包,他們不必擔心構建它。他們只需pipinstall后即可使用該軟件包。它也是一個更小的共享文件(與所有源代碼相比),安裝速度更快,因為它不需要運行安裝腳本。

2.wheel的類型

(1).universalwheel:包含py2.py3-none-any.whl。它在任何操作系統和平臺上都支持Python2和Python3。

(2).pure-pythonwheel:包含py3-none-any.whl或py2-none-any.whl。它支持Python3或Python2,但不能同時支持兩者。它在其它方面與universalwheel相同,但它會被標記為py2或py3而不是py2.py3標簽。

(3).platformwheel:支持特定的Python版本和平臺。

3.創建wheel

(1).將所有模塊(python腳本)、包(包含模塊的文件夾/目錄)保存在父目錄中。隨意命名根目錄,通常與項目相關。

(2).最好創建一個空的名為__init__.py文件,并將此__init__.py文件放在所有包目錄和子包目錄下。無需將其保存在根目錄中。

(3).創建一個名為setup.py的文件并將其放在根目錄中。此腳本的內容至少應包括:distributionname,versionnumber,andlistofpackagenames

(4).轉到你可以運行python和pip命令的命令提示符。在命令提示符下更改目錄并導航到放置setup.py的項目的根目錄,執行以下命令:擴展名為.whl的文件將在根目錄下自動創建的子目錄中創建,名為dist。

wheel中并不包含setup.py,wheel不必運行setup.py腳本。

注:需提取安裝wheelsetuptools:pipinstallwheelsetuptools,在conda中默認是安裝的

pythonsetup.pybdist_wheel--universal#universalwheel

pythonsetup.pybdist_wheel#pure-Pythonwheel

這里通過conda在虛擬環境base下創建一個wheel,取名為testwheel目錄組織結構如下所示:

setup.py內容如下:

importsetuptools

setuptools.setup(

name="testwheel",

version="1.0.0",

author="fengbingchun",

author_email="fengbingchun@163.com",

description="testwheel",

packages=setuptools.find_packages(),

url="/fengbingchun",

license="MIT",

python_requires="=3.8"

)

testwheel目錄下的__init__.py是個空文件,math目錄下的__init__.py內容如下:

from.math_addimport*

from.math_subimport*

math_add.py內容如下:

defadd3(a,b,c):

print("calladdoperation:threeparameters...")

return(a+b+c)

defadd2(a,b):

print("calladdoperation:twoparameters...")

return(a+b)

math_sub.py內容如下:

defsub3(a,b,c):

print("callsuboperation:threeparameters...")

return(a-b-c)

defsub2(a,b):

print("callsuboperation:twoparameters...")

return(a-b)

執行如下命令生成wheel,此wheel僅限于在Python3上執行,將終端定位到setup.py目錄下

執行完上述命令后會產生3個新的目錄,build,dist,testwhell.egg-info,各個目錄的內容如下所示,生成的whell在dist目錄下,全名為testwheel-1.0.0-py3-none-any.whl,只需將此文件分發出去,其他人安裝后即能使用。

4.導入使用wheel

如果你想在項目中安裝已經安裝過的wheel文件,需要更新此wheel的版本號。如果版本號保持不變,pip將不會安裝它。或者先卸載已安裝的whell:pipuninstalltestwheel

通過conda新建一個虛擬環境testwheel,用來測試上面生成的testwheel-1.0.0-py3-none-any.whl,將終端定位到其它的test目錄下,并將生成的wheel文件拷貝到此目錄下,安裝,執行結果如下圖所示:

會將此wheel安裝到anaconda3/envs/testwheel/lib/python3.8/site-packages/目錄下,如下圖所示:

在tmp下添加一個test.py文件,用于測試wheel,內容如下:

fromtestwheel.mathimportmath_add,math_sub

a,b,c=10,5,2

print("add3:",math_add.add3(a,b,c))

print("add2:",math_add.add2(a,b))

print("sub3:",math_sub.sub3(a,b,c))

print("sub2:",math_sub.sub2(a,b))

print("

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論