🚀 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 argparsefrom typing import Textdef 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 --helpusage: helloArgparse.py [-h] nameHello Functionpositional arguments:name Any textoptional arguments:-h, --help show this help message and exit
显然,上述示例可以看出,一旦我们的参数很多,我们不得不为每个参数添加对应的参数解释。那么如果使用 Fire 的话,就可以变得非常方便,具体如下所示:
import firefrom typing import Textdef 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 --helpNAMEhelloFire.py - Hello functionSYNOPSIShelloFire.py <flags>DESCRIPTIONHello functionFLAGS--name=NAMEType: strDefault: 'World'Any text
