🚀 Fire Github:https://github.com/google/python-fire

Fire 是一个用于从任何 Python 对象自动生成命令行接口(CLI)库,它主要具备以下优点:

  • 基于非常简单的方式创建 CLI
  • 一款用于开发和调试 python 代码的神奇
  • 有助于探索现有代码,或将其他人的代码转换为 CLI
  • 使得 Bash 和 Python 之间的转换更容易
  • 通过使用需要已经导入和创建的模块、变量设置 REPL,可以更轻松地使用解释器

    1. 安装Fire

    安装 Fire 非常简单,只需要一行命令即可,并不需要繁琐的过程:
    1. $ pip install fire

或者使用conda进行安装:

  1. $ conda install fire -c conda-forge

2. 对比传统方式

传统创建命令行接口的方式是使用argparse库,这个库的使用的学习成本,并非特别容易上手,下面我们来看一个简单的示例:

  1. import argparse
  2. from typing import Text
  3. def hello(name: Text = "World") -> Text:
  4. return f"Hello {name}!"
  5. if __name__ == '__main__':
  6. parser = argparse.ArgumentParser(description="Hello Function")
  7. parser.add_argument("name", type=str, help="Any text")
  8. args = parser.parse_args()
  9. print(hello(args.name))

终端中需要使用如下命令:

  1. $ python hello.py --help
  2. usage: helloArgparse.py [-h] name
  3. Hello Function
  4. positional arguments:
  5. name Any text
  6. optional arguments:
  7. -h, --help show this help message and exit

显然,上述示例可以看出,一旦我们的参数很多,我们不得不为每个参数添加对应的参数解释。那么如果使用 Fire 的话,就可以变得非常方便,具体如下所示:

  1. import fire
  2. from typing import Text
  3. def hello(name: Text = "World") -> Text:
  4. """
  5. Hello function
  6. :param name: Any text
  7. :return: str
  8. """
  9. return f"Hello {name}!"
  10. if __name__ == '__main__':
  11. fire.Fire(hello)

终端中还是使用上述命令,可以看到我们的不需要添加过多的参数解释,只需要在函数内部添加描述即可:

  1. $ python hello.py --help
  2. NAME
  3. helloFire.py - Hello function
  4. SYNOPSIS
  5. helloFire.py <flags>
  6. DESCRIPTION
  7. Hello function
  8. FLAGS
  9. --name=NAME
  10. Type: str
  11. Default: 'World'
  12. Any text