熱線電話:13121318867

登錄
首頁精彩閱讀如何發布一個Python命令行工具
如何發布一個Python命令行工具
2016-03-24
收藏
上次寫的一個終端里面斗魚TV彈幕Python版本和Ruby版本,并且發布到PIP和RubyGems上面.在發布PIP包的時候,居然Google不到一篇可以非常好的講解這個流程的文章.于是整理這篇文章,并且方便后來自己檢索,并且方便他人找資料.

自推薦下依照本文定制的命令行工具danmu.fm的github地址:

https://github.com/twocucao/danmu.fm

本文的目的也是非常簡單:

寫一個Python命令行工具,并且發布到PIP上面.并且在這個過程中給出我自己的一些思考.

如何分解這個發布任務?

只需要進行如下的兩個步驟便可以:

1.寫好一個Python命令行工具.

2.發布它.

當然,這樣不夠細致.再細分一下.


1.寫好一個Python命令行工具

寫好一個命令行工具首先要知道命令行工具是什么?

在我看來,命令行工具就是一種完成某種類型的任務的終端程序.

也就是基本上沒有什么用戶界面的程序.

由于基本上沒有什么用戶界面,所以導致單個命令行的交互能力及其低下.但這種低下的交互性對于一些固定工作而言,簡直就是最靈活的工具.只需要輸入一些命令便可以完成某種類型的工作.實在是方便的很.

所以,某種程度上,終端程序低交互的缺點反而成了優點.

1.1.Python的如何編寫一個簡單的命令行

對于Python和命令行交互,我們很容易想出一個比較方便的方案.

sys.argv就是這樣的嘛!

我們很容易這樣寫代碼.



甚至我們也可以這樣寫命令行,



那么,這樣寫的后果就是,不方便解析出(不是不能,是不方便) -d -f 0 以及 thisisaargv1.

不信的話,你解析一個下面場景的命令行試試,


于是Python就提供了一個非常好用的模塊可以使用.叫做argparse.

上面的描述就變成了這個樣子


保存為danmu.py

這樣就可以執行命令



python danmu.py http://www.douyutv.com/xiaocang -q 1 -v 2

通過args就可以獲取參數,然后進行終端程序的參數初始化.

可是這和我們的要求還是不同嘛,我們不想多寫Python XXX,我們想直接XXX.就像這樣.



不急,下面就是了.

1.2.如何組織代碼結構.

于是,現在就要開始組織代碼結構了.

我們在最終的代碼目錄大概是這樣的.



這就是我上次寫的danmu.fm的代碼目錄.

聰明的你這時候你注意到了:

1.主要的程序不是放在根目錄下面,而是放在第二目錄danmufm下面.

2.setup.cfg 是什么鬼東西

3.setup.py 是什么鬼東西

對于上面幾點,我們分別進行解釋

1.2.1 為什么主要程序在第二目錄下

為了把主要的程序分離出來,放在第二目錄下面,這樣的待會打包以后多出很多文件夾就不會對源碼造成干擾.

當然,由于把程序放在了第二目錄下面,所以,腳本里面的from import語句應該使用相對路徑導入.

相對路徑導入的的時候需要注意運行的時候使用如下命令



1.2.2 setup.cfg

填寫如下內容即可.


然后去寫Markdown的Readme就好了.

1.2.3 setup.py

這個是重頭戲了.

setup這個py文件就是打包配置文件.對這個程序是誰的,有什么依賴,入口是什么,等等等等的配置.



官方有distutils這個包管理器工具,設置也非常的簡單,只是,它不支持entry_points屬性,由于無法使用entry_point,也就無法通過命令來跳轉到指定模塊運行程序,這也就意味著,官方工具不方便寫成命令行.還是setuptools好.

上面需要注意的就是install_requires可以添加依賴.其他的你猜都可以猜出來是做什么的.自己去看代碼,我就不多說了.

2. 發 布

所謂的發布,就是將打包好的程序的某個版本發布到某個倉庫中.

2.1.注冊pypi賬戶

到這個上面注冊賬號:

https://pypi.python.org/pypi

2.2.注冊在賬戶下面注冊Python包

進入對應項目根文件,然后執行



這一步程序會讓你輸入剛剛注冊的賬號和密碼,然后注冊該包.注冊該包以后,你就有了一個小倉庫.可以存放不同版本的danmu.fm.

注冊的倉庫是可以在這個地址看到的,

https://pypi.python.org/pypi?%3Aaction=pkg_edit&name=danmu.fm

2.3.上傳打包好的Python命令行工具.

這里需要借助一個小工具,twine.twine是一個更加安全方便上傳打包好的代碼的工具.



接著開始打包,打包成兩個版本,一個是不需要build的版本,另一個是需要build的版本(順帶吐槽下,這兩個詭異的命名).



于是剩下來的就顯而易見了,上傳build完畢的程序到倉庫中.


于是,安裝一下,測試是否成功


命令行的工具是這樣使用的.



3. 完 善

不斷的完善代碼,然后打包終端程序發布到倉庫給別人用,這就是整個的PIP打包發布流程.

1.這個時候,你可能需要使用版本控制軟件.

2.你可能需要增多的代碼的測試.

文 | 無與童比

來源 | 簡書



數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢