click旨在幫助創(chuàng)建復(fù)雜而簡(jiǎn)單的 CLI 工具 一樣。然而,它設(shè)計(jì)的力量在于能夠任意嵌套 系統(tǒng)在一起。例如,如果你曾經(jīng)使用過(guò)Django,你將 已經(jīng)意識(shí)到它提供了一個(gè)命令行實(shí)用程序,但 Celery 也是如此。 當(dāng)將 Celery 與 Django 一起使用時(shí),有兩個(gè)工具需要與之交互 彼此并交叉配置。
在兩個(gè)獨(dú)立的 Click 命令行實(shí)用程序的理論世界中,它們 可以通過(guò)將一個(gè)嵌套在另一個(gè)內(nèi)部來(lái)解決此問(wèn)題。例如, Web 框架還可以加載消息隊(duì)列框架的命令。
click的文檔: Welcome to Click — Click Documentation (8.1.x) (palletsprojects.com)
基于python語(yǔ)言開發(fā)命令行工具
相比于寫shell,或者使用C,C++等語(yǔ)言寫命令行工具,python寫的話,好像更簡(jiǎn)單,首先,python還是很容易上手學(xué)習(xí)的。之前很困惑大家是怎么寫的那么復(fù)雜的命令行程序的,后來(lái)看了一個(gè)視頻才領(lǐng)悟過(guò)來(lái)。其實(shí)并不需要學(xué)習(xí)那么多語(yǔ)言來(lái)寫一個(gè)命令行(exe)程序,只要python就可以了。
主要步驟如下:
- 創(chuàng)建setup.py
from setuptools import setup
setup(
name="SayHello",
version="0.1",
py_modules=["SayHello"],
include_package_data=True,
install_requires=["click"],
entry_points="""
[console_scripts]
sayhello=SayHello:SayHello
""",
)
# 關(guān)于setup.py 文件編寫: [花了兩天,終于把 Python 的 setup.py 給整明白了 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/276461821)
- 創(chuàng)建SayHello.py
(這里使用里click包,網(wǎng)上介紹說(shuō)這個(gè)包很適合開發(fā)命令行程序。安裝Flask時(shí)候,會(huì)順便帶上)
import click
@click.command()
@click.option('--name', prompt='內(nèi)容', help='請(qǐng)輸入內(nèi)容.')
def SayHello(name):
click.echo('Hello %s!' % name)
安裝:
這里臨時(shí)使用 “ pip install -e . " 的方式臨時(shí)安裝下。 (進(jìn)入目錄后,執(zhí)行這個(gè)命令,用于開發(fā)中,臨時(shí)安裝調(diào)試)測(cè)試:
命令行輸入: sayheloo
> 內(nèi)容: admin
> Hello admin!
這個(gè)時(shí)候,輸入上面自定義的命令,就可以執(zhí)行了。在不同的平臺(tái)上,都會(huì)編譯出相關(guān)可執(zhí)行的腳本。
5.打包
參考:https://zhuanlan.zhihu.com/p/276461821
python setup.py sdist # 打包成tar.gz
python setup.py bdist # 一次性打包出多種格式來(lái)
python setup.py bdist_wininst
python setup.py bdist_rpm
python setup.py bdist_egg