歡迎光臨
每天分享高質量文章

親自動手寫一個python庫(二)

引言

經過上一節中所述,我們搭建好了一個Python環境用於庫開發,我們在這一節真正開始搭建一個庫,並將其釋出。

專案檔案結構

首先我們先構建出自己專案的檔案結構,首先是LICENSE和README.md,這兩個檔案並不是必要的,但是最好將其加上,方便別人瞭解你的專案。README.md是關於本專案的介紹,LICENSE是表示該專案所遵循的開源協議,一般MIT用的比較多,其他協議你可以百度谷歌瞭解一下。

接下來是打包庫需要的一些檔案,主要有MANIFEST.in和setup.py兩個檔案。MANIFEST.in表示打包時不會被自動包含進去的附加檔案清單。setup.py是打包程式配置檔案,需要設定一些選項。此外,setup.cfg是包含setup.py額外配置資訊的檔案,我沒有用到這其中的設定,所以本專案中其是空的。

caafinder檔案夾就是我們要寫的Python程式,我們要註意這個檔案夾裡必須有__init__.py這個檔案。

下麵是一下setup.py的一些簡單配置選項,詳細請參考官方檔案。

可以參考一下:

  • PyPA sample project這是一個官方示例庫結構。

  • Python Packaging User Guide這是Python打包的官方英文檔案。

關於模組

模組也就是庫,我們自己寫程式時,通常透過import XX來匯入一個需要的模組,在Python中,一個py檔案就是一個模組,如一個abc.py的檔案就是一個名字叫abc的模組。

你也許還想到,如果不同的人編寫的模組名相同怎麼辦?為了避免模組名衝突,Python又引入了按目錄來組織模組的方法,稱為包(Package),包是一個帶有__init__.py的檔案夾,如圖中檔案所示,我們有一個包caafinder,因為它的子級有一個__init__.py,包caafinder擁有database和workspace兩個模組。__init__.py可以是空檔案,也可以有Python程式碼,因為__init__.py本身就是一個模組,而它的模組名就是caafinder。

程式打包

透過執行下列陳述句來進行打包:

其中xxx可以是下列幾種方式中其中一個:

舉個例子:

此時在根目錄出現了dist檔案夾,裡面有name-version.tar.gz這個檔案,這就是我們要釋出到PyPI的壓縮包了。

釋出到PyPI

首先我們需要在PyPI上註冊一個帳號,併在本地使用者根目錄下建立檔案~/.pypirc,這樣以後就不需要輸入帳號密碼了。

接下來,需要在PyPI網站上註冊一個專案,網站提供三種方式註冊,選擇一種即可,最簡單的是透過上傳打包時生成的PKG-INFO檔案,生成專案資訊。此步驟只需在第一次釋出時操作。

接下來就是最後一步,上傳打包好的庫。我們這裡是用twine,如果環境中沒有安裝,需要先採用pip install twine安裝即可。

此時在網頁上就可以看到自己的原始碼包啦,並且可以透過使用pip install packagename,就可以使用我們自己寫的Python庫了。

祝大家玩的開心,希望大家能到Github上幫忙點個贊。

作者:Gutierrez

來源:http://www.jianshu.com/p/81d20ccf5d13


————廣告時間————


馬哥教育2018年Python自動化運維開發實戰面授班2018年3月5號開班,馬哥聯合BAT、豆瓣等一線網際網路Python開發達人,根據目前企業需求的Python開發人才進行了深度定製,加入了大量一線網際網路公司:大眾點評、餓了麼、騰訊等生產環境真是專案,課程由淺入深,從Python基礎到Python高階,讓你融匯貫通Python基礎理論,手把手教學讓你具備Python自動化開發需要的前端介面開發、Web框架、大監控系統、CMDB系統、認證堡壘機、自動化流程平臺六大實戰能力,讓你從0開始蛻變成Hold住年薪20萬的Python自動化開發人才

掃描二維碼領取學習資料

更多Python好文請點選【閱讀原文】哦

↓↓↓

贊(0)

分享創造快樂