click命令行程序開發(fā)

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就可以了。

主要步驟如下:

  1. 創(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)

  1. 創(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)


  1. 安裝:
    這里臨時(shí)使用 “ pip install -e . " 的方式臨時(shí)安裝下。 (進(jìn)入目錄后,執(zhí)行這個(gè)命令,用于開發(fā)中,臨時(shí)安裝調(diào)試)

  2. 測(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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容