使用配置文件或CLI Args作为外部参数

时间:2019-07-19 22:07:19

标签: python python-3.x coding-style production-environment

我正在一个Python项目中,运行该程序的人需要指定一些变量,程序在执行过程中将使用这些变量。我想知道要维持生产级编码标准的首选方法,是使用CLI还是JSONconfig文件。

P.S。

更具体地说,这是一个Spark作业,运行该作业的开发人员需要指定这些外部参数

2 个答案:

答案 0 :(得分:1)

一个好的方法是将config.py文件与.env文件一起使用。这使您可以在.env文件中秘密定义变量,并在config.py中使用python的dotenvos库对其进行访问。 .env中定义的变量的实际内容不会在项目中公开。例如,在项目目录中,您可以有一个名为.env的文件,其中包含类似

的行
# project/.env

foo='bar'
a=10
important_var='345v4325'

config.py中的

# project/config.py

import os
from dotenv import load_dotenv

load_dotenv()

secret_foo = os.environ.get('foo')
secret_a = os.environ.get('a')
secret_important_var = os.environ.get('important_var')

然后导入配置并像这样使用vars

# project/module.py

import config

foo = config.secret_foo

因此,项目经理可以修改.env中的内容,而无需修改任何代码。如果隐私不是问题,则可以跳过.env的内容,并直接在config.py

中定义变量

注释
python-dotenv不是标准的python库。如果要避免新的依赖关系,可以通过在bash脚本(例如

)中定义变量来实现类似的功能。
# ~/.bashrc
export foo='bar'

# and so on...

并运行source ~/.bashrc,然后在config.py中删除from dotenv import load_dotenvload_dotenv行。

如果代码在专用服务器上执行,则效果很好,您可以在其中定义所需的环境变量。

答案 1 :(得分:0)

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("--someoption", type=str, help="something")
args = parser.parse_args()

print(args.someoption)

您可以使用argparse软件包在CLI中传递选项,非常简单。您可以阅读文档here

输出:

vignesh@DESKTOP-C9L0NQI:/mnt/c/Users/vprabhakaran/Downloads/sunm$ ./argprs.py --someoption printthis
printthis

要解析配置文件,您可以使用configparser包,非常简单。