天天看點

保姆級教程帶你開發優質的Python庫之下篇【種子項目】pypi 倉庫 - 它就像App商店如何擷取别人分享的庫

保姆級教程帶你開發優質的Python庫之上篇 保姆級教程帶你開發優質的Python庫之中篇

前面兩篇的開發基本把項目準備好了,這篇學委講講這個項目開源項目的釋出, 正式的釋出優秀的項目,分享給全世界python開發者使用。

pip install pypi-seed
ppc 
      

上面的指令,可以讓我們快速試用這個種子項目。這個庫

pypi-seed

的首頁介紹如下,我們下面細講。

保姆級教程帶你開發優質的Python庫之下篇【種子項目】pypi 倉庫 - 它就像App商店如何擷取别人分享的庫

pypi 倉庫 - 它就像App商店

說到釋出,學委這裡需要提到pypi網站了,如下圖所示,

摘自學委的另一篇熱門文章

保姆級教程帶你開發優質的Python庫之下篇【種子項目】pypi 倉庫 - 它就像App商店如何擷取别人分享的庫

很多python高手開發了很多項目,凝煉了一些優質的可複用的代碼,但是他們不會選擇打包發送一個壓縮檔案分享。

優秀的開發者會把項目組織好,釋出到pypi倉庫,然後其他開發者通過一個統一的工具:pip。

簡單來說,pypi倉庫用來存放成千上萬的優質的python代碼庫,然後pip類似手機的應用寶/App下載下傳安裝工具,幫我們輕松快速的擷取别人的代碼。

自己怎麼上傳代碼到pypi的呢?

項目代碼可以點選這裡Github擷取,前面兩篇優質python 庫開發講解過了,主要是項目必須配置一個setup.py 。

之前在保姆級教程帶你開發優質的Python庫之中篇中詳細談了 setup.py,下面直接建構上傳項目。

第一步,先把項目打包為特定的格式,比如,調用下面的代碼生成通用的whl檔案。

複制運作下面的指令,能夠生成一個通用的whl包。

python setup.py bdist_wheel --universal
      

這是部分運作截圖:

保姆級教程帶你開發優質的Python庫之下篇【種子項目】pypi 倉庫 - 它就像App商店如何擷取别人分享的庫

運作結束後,目前項目會多一個dist目錄(包含生成的whl檔案,比如 pypi_seed-1.0.7-py2.py3-none-any.whl)。

還有其他中間資料目錄,讀者可以自己打開看看。

第二步,再上傳項目的whl檔案到pypi倉庫

運作下面的指令:

#如果沒有安裝twine
pip install twine
#使用twine上傳dist目錄生成的whl檔案到pypi
twine upload dist/pypi_seed-1.0.7-py2.py3-none-any.whl

      

運作效果如下圖:

保姆級教程帶你開發優質的Python庫之下篇【種子項目】pypi 倉庫 - 它就像App商店如何擷取别人分享的庫

運作過程需要輸入pypi網站的使用者名和密碼。

如果沒有,需要在pypi.org 注冊賬戶才能釋出自己的庫。

釋出成功就可以在pypi倉庫查到(打開上圖的twine在上傳包成功後會顯示庫的連結)。下面打開看看。

第三步 檢視釋出的庫

比如下面的,從pypi截圖的。也可以搜尋庫名字,看看。

保姆級教程帶你開發優質的Python庫之下篇【種子項目】pypi 倉庫 - 它就像App商店如何擷取别人分享的庫

比如下面是這個庫的一些版本釋出曆史:

保姆級教程帶你開發優質的Python庫之下篇【種子項目】pypi 倉庫 - 它就像App商店如何擷取别人分享的庫

如何擷取别人分享的庫

比如這個pypi-seed ,這個用來生成庫項目的工具。 可以通過以下指令安裝。

pip install pypi-seed
      

使用python種子項目

通常我們會通過庫的首頁檢視使用說明,pypi-seed的項目位址為:

https://pypi.org/project/pypi-seed/

不用打開,學委直接整理了使用的指令:

ppc --project demo_project --author testuser --dir=/tmp
      

或者

pypiseed --project demo_project --author testuser --dir=/tmp
      

兩個指令任選一個複制運作,即可快速建立一個python模版項目了!

效果如下:

保姆級教程帶你開發優質的Python庫之下篇【種子項目】pypi 倉庫 - 它就像App商店如何擷取别人分享的庫

整個過程挺簡單的,主要為制作whl包,釋出到pypi。

接下來可以繼續使用ppc(pypiseed)建立标準的python項目,繼續開發了。