【问题标题】:How to do configuration of a python environment [closed]如何配置python环境[关闭]
【发布时间】:2016-08-23 09:57:39
【问题描述】:

在过去的几年里,我主要使用 django。 Django 使用环境变量DJANGO_SETTINGS_MODULE 来查找其配置。

现在我有一个不使用 django 的项目,我希望有一种简洁易懂的方式来加载配置。

例子:

我想要一个全局布尔值来打开或关闭调试:

settings.DEBUG

我想有成千上万种方法可以做到这一点。

但是存储和加载项目设置的最 Pythonic 方式是什么?

...也许 Python 社区已经确定了一种我还不知道的众所周知的默认方式。

【问题讨论】:

  • @Matt 这个问题不应该被关闭。要求以 Python 方式做某事是这个网络上普遍接受的问题。
  • 同意,投票支持重新开放
  • @theblizz “Pythonic”没有通用定义,所以当人们询问“Pythonic”时,他们要求的答案将符合每个人对他们认为是“Pythonic”的看法。此外,这个问题也太笼统了。我见过几十种加载配置的方法。不同的项目和需求需要不同的解决方案。这里的 OP 没有指定任何具体的约束(除了“Pythonic”,它根本不是一个约束)。
  • @Louis 更好地“遵循 python 的禅宗”。我认为这是一个普遍的定义。你怎么看?
  • @guettli 同样主观,这并没有考虑到问题的广泛性。

标签: python django configuration


【解决方案1】:

发件人:https://docs.python.org/2/library/constants.html

使用全局不可变常量

__debug__

如果 Python 没有使用 -O 选项启动,则此常量为真。

如果您要设置日志记录级别,请使用logging.setLevel(lvl)https://docs.python.org/2/library/logging.html#logging.Logger.setLevel

更新:

对于一般的全局常量,我会使用单例,即模块,来存储您需要的常量。 IE。创建一个模块config.py

DEBUG = False
OTHER_THING = True

你可以从其他模块

import config
print(config.DEBUG)

【讨论】:

    【解决方案2】:

    在我看来,最 Pythonic 的方式是使用 ConfigParser。它提供了人们可能需要的不同访问协议,以及不同的适配器(例如 JSON)。

    此外,它允许轻松定制,有完整的文档,并且集成在其他设施中,例如logging

    logging 设施使用ConfigParser 进行文件配置的示例位于logging manual pages。我通常为日志配置保留一个单独的文件,但可以为整个项目使用单个文件。

    【讨论】:

    • 它也与语言无关,因此配置管理员不需要任何 Python 知识即可使用它。
    • 请详细说明“它.. 与其他设施(如日志记录)很好地集成”。 ConfigParser 的文档中没有“logging”这个词。
    • 你是对的,恰恰相反,logging 使用ConfigParser,所以文档在第一个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 2020-02-13
    • 2014-02-23
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    相关资源
    最近更新 更多