如何發布一個Python命令行工具章

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

如何分解這個發布任務?

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

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

2.發布它.

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

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

1.1.命令行的特點,以及Python的如何編寫命令行

1.2.如何組織代碼結構

.

2.發布

2.1.注冊pypi賬戶

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

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

3.完善代碼

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

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

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

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

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

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

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

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

sys.argv就是這樣的嘛!

我們很容易這樣寫代碼.

python testargv.py thisisaargv1

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

python testargv.py thisisaargv1 -d -f 0

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

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

# 用戶可能這樣輸入

danmu.fmhttp://www.douyutv.com/xiaocang -q 1 -v 2

danmu.fm-q1-v2http://www.douyutv.com/xiaocang

# 當然,肯定還有漏寫啦,等等,你得需要轉類型,增加各種blablabla的描述吧,添加默認的參數值吧.

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

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

importargparse

APP_DESC="""

這就是描述

"""

print(APP_DESC)

iflen(sys.argv)==1:

sys.argv.append('--help')

parser=argparse.ArgumentParser()

parser.add_argument('-q','--quality',type=int,default=0,help="download video quality : 1 for the standard-definition; 3 for the super-definition")

parser.add_argument('-v','--verbose',default=0,help="print more debuging information")

parser.add_argument('-s','--store',help="保存流媒體文件到指定位置")

parser.add_argument('-c','--config',default=0,help="讀取~/.danmu.fm配置,請~/.danmu.fm指定數據庫")


# 獲取對應參數只需要args.quality,args.url之類.

url=(args.url)[0]

print(url)

#其他執行邏輯

保存為danmu.py

這樣就可以執行命令

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

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

1.2.如何組織代碼結構.

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

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

danmu.fm

├──README.md

├──danmufm

│├──__init__.py

│├──client

││├──__init__.py

││├──__init__.pyc

││├──douyu_client.py

││└──douyu_danmu_client.py

│├──danmu.py

│├──misc

││├──__init__.py

││├──color_printer.py

││├──downloaders.py

││└──player.py

│└──model

│├──__init__.py

│└──douyu_msg.py

├──docs

├──setup.cfg

├──setup.py

├──sh.py

└──tests

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

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

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

setup.cfg 是什么鬼東西

setup.py 是什么鬼東西

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

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

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

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

相對路徑導入的的時候需要注意運行的時候使用如下命令學好python學好python你需要一個良好的環境,一個優質的開發交流群,群里都是那種相互幫助的人才是可以的,我有建立一個python學習交流群,在群里我們相互幫助,相互關心,相互分享內容,這樣出問題幫助你的人就比較多,群號是301,還有056,最后是051,這樣就可以找到大神聚合的群,如果你只愿意別人幫助你,不愿意分享或者幫助別人,那就請不要加了,你把你會的告訴別人這是一種分享。如果你看了覺得還可以的麻煩給我點個贊謝謝

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容