python click 包是一個方便的cli 開發包,我們可以用來開發強大的cli 應用
使用venv 進行環境准備,示例代碼來自官方
venv 環境准備
python3 -m venv demoapp
安裝
pip install click
基本使用
- 代碼
cli.py
import click
@click.command()
@click.option("--count", default=1, help="Number of greetings.")
@click.option("--name", prompt="Your name",
help="The person to greet.")
def hello(count, name):
"""Simple program that greets NAME for a total of COUNT times."""
for _ in range(count):
click.echo("Hello, %s!" % name)
if __name__ == '__main__':
hello()
- 運行
python cli.py
效果
python cli.py
Your name: dalong
Hello, dalong!
制作一個pip 包
制作pip 包可以方便進行我們的代碼分發,還是使用venv 進行環境的准備
- 項目結構
├── README.md
├── cli
│ └── __init__.py
└── setup.py
- 代碼說明
cli/init.py 核心代碼
import click
@click.command()
@click.option("--count", default=1, help="Number of greetings.")
@click.option("--name", prompt="Your name",
help="The person to greet.")
def hello(count, name):
"""Simple program that greets NAME for a total of COUNT times."""
for _ in range(count):
click.echo("Hello, %s!" % name)
if __name__ == '__main__':
hello()
setup.py pip 包配置
import setuptools
with open("README.md", "r") as fh:
long_description = fh.read()
setuptools.setup(
name="dalongrong_cli-demo",
version="0.0.1",
author="dalongrong",
author_email="1141591465@qq.com",
description="a simple cli project",
long_description=long_description,
install_requires=['click'],
long_description_content_type="text/markdown",
url="https://github.com/rongfengliang/click-cli-demo.git",
packages=setuptools.find_packages(),
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
entry_points={
'console_scripts': [
'dalongcli=cli:hello',
],
}
)
- 本地安裝測試
pip install .
cli 使用命令
dalongcli --name dalong --count 3
效果
Hello, dalong!
Hello, dalong!
Hello, dalong!
- 說明
比較好的方法是push 到pip 私服(企業內部),或者push 到公共pip 倉庫,方便大家都使用,具體的可以參考 自定義pip 開發
參考資料
https://github.com/pallets/click
https://click.palletsprojects.com/en/7.x/
https://www.cnblogs.com/rongfengliang/p/10219292.html
https://github.com/rongfengliang/click-cli-demo
https://packaging.python.org/guides/distributing-packages-using-setuptools/#install-requires