我个人喜欢用
argparse
这是
an example
使用
和环境变量:
def parse_args(argv=None):
parser = ArgumentParser(description='Watch the raw data folder for new runs.',
formatter_class=ArgumentDefaultsHelpFormatter)
parser.add_argument(
'--kive_server',
default=os.environ.get('MICALL_KIVE_SERVER', 'http://localhost:8000'),
help='server to send runs to')
parser.add_argument(
'--kive_user',
default=os.environ.get('MICALL_KIVE_USER', 'kive'),
help='user name for Kive server')
parser.add_argument(
'--kive_password',
default=SUPPRESS,
help='password for Kive server (default not shown)')
args = parser.parse_args(argv)
if not hasattr(args, 'kive_password'):
args.kive_password = os.environ.get('MICALL_KIVE_PASSWORD', 'kive')
return args
设置这些环境变量可能有点混乱,特别是对于系统服务。如果您使用的是systemd,请查看
service unit
,注意使用
EnvironmentFile
而不是
Environment
任何用户都可以使用
systemctl show
.
我通常让在工作站上运行的开发人员使用默认值,这样他们就可以在不更改任何配置的情况下开始开发。
另一个选项是将配置设置放入
settings.py
settings_template.py
如果您的设置非常复杂/灵活,以至于环境变量或设置文件变得一团糟,那么我会将项目转换为带有API的库。然后,用户编写一个调用API的脚本,而不是设置。您也不必在PyPI上托管库。
pip
可以从
GitHub repository