🚀 Fire Github:https://github.com/google/python-fire
Fire 是一个用于从任何 Python 对象自动生成命令行接口(CLI)库,它主要具备以下优点:
- 基于非常简单的方式创建 CLI
- 一款用于开发和调试 python 代码的神奇
- 有助于探索现有代码,或将其他人的代码转换为 CLI
- 使得 Bash 和 Python 之间的转换更容易
- 通过使用需要已经导入和创建的模块、变量设置 REPL,可以更轻松地使用解释器
1. 安装Fire
安装 Fire 非常简单,只需要一行命令即可,并不需要繁琐的过程:$ pip install fire
或者使用conda
进行安装:
$ conda install fire -c conda-forge
2. 对比传统方式
传统创建命令行接口的方式是使用argparse
库,这个库的使用的学习成本,并非特别容易上手,下面我们来看一个简单的示例:
import argparse
from typing import Text
def hello(name: Text = "World") -> Text:
return f"Hello {name}!"
if __name__ == '__main__':
parser = argparse.ArgumentParser(description="Hello Function")
parser.add_argument("name", type=str, help="Any text")
args = parser.parse_args()
print(hello(args.name))
终端中需要使用如下命令:
$ python hello.py --help
usage: helloArgparse.py [-h] name
Hello Function
positional arguments:
name Any text
optional arguments:
-h, --help show this help message and exit
显然,上述示例可以看出,一旦我们的参数很多,我们不得不为每个参数添加对应的参数解释。那么如果使用 Fire 的话,就可以变得非常方便,具体如下所示:
import fire
from typing import Text
def hello(name: Text = "World") -> Text:
"""
Hello function
:param name: Any text
:return: str
"""
return f"Hello {name}!"
if __name__ == '__main__':
fire.Fire(hello)
终端中还是使用上述命令,可以看到我们的不需要添加过多的参数解释,只需要在函数内部添加描述即可:
$ python hello.py --help
NAME
helloFire.py - Hello function
SYNOPSIS
helloFire.py <flags>
DESCRIPTION
Hello function
FLAGS
--name=NAME
Type: str
Default: 'World'
Any text