Facebook 出品:针对复杂应用的配置优雅解决方案框架

之前分享过 Google 开源简洁、优雅的命令行程序生成工具:Fire,可以很方便的把任意的 Python 代码转化为通过命令行执行的程序。但是对于比较复杂的应用参数需要配置,如果都通过命令行参数配置的话,参数会比较多不方便管理。

今天要推荐的是 Facebook 开源的优雅配置框架:hydra,可以通过命令行参数,同时也可以通过配置文件(比如 YAML)配置。

安装和使用方法

安装方法:pip install --upgrade hydra-core

Python file: my_app.py,命令行参数配置方式:

import hydra

@hydra.main()
def my_app(cfg):
    print(cfg.pretty())

if __name__ == "__main__":
    my_app()

使用方法:

$ python my_app.py db.driver=mysql db.user=omry db.pass=secret
db:
  driver: mysql
  pass: secret
  user: omry

Python file: my_app.py,YAML 配置文件配置:

@hydra.main(config_path='config.yaml')
def my_app(cfg):
    print(cfg.pretty())

使用方法:

$ python my_app.py
db:
  driver: mysql
  pass: secret
  user: omry

通过上述 Google 和 Facebook 开源的两个工具,虽然是不同的两种方式来解决应用参数配置的问题,但是都是通过 Python 装饰器的语法来封装整个库,可以看出 Python 中装饰器的重要性,而且看出来了没有,装饰器用好了,可以让使用方很优雅的使用,同时代码也很简洁。如果你会使用 Python,但是都没用过装饰器,甚至一点不懂,赶紧开始学习吧,这个都不懂就出去面试很容易被怼的。

项目地址:https://github.com/facebookresearch/hydra


更多精彩请扫码关注如下公众号。

Written on October 7, 2019