【问题标题】:How to load environment variables in a config.ini file?如何在 config.ini 文件中加载环境变量?
【发布时间】:2019-04-19 03:49:05
【问题描述】:

我有一个 config.ini 文件,其中包含一些属性,但我想读取配置文件中的环境变量。

[section1]
 prop1:(from envrinment variable) or value1

这是可能的还是我必须编写一个方法来解决这个问题?

【问题讨论】:

  • @RoryDaulton - 不是重复的!那个人从ini file 读取值,而我想读取ini file 中的环境值。如果环境变量不可用,我可以切换到默认值。
  • 你的目的还不清楚。根据定义,“环境变量”是操作系统(Windows 或 DOS)保存的值,而不是文件中的值。但是,您可以在ini 文件中存储任何常规文本,例如环境变量的内容。你想要什么在另一个问题中不容易做到?也许你应该更详细地解释你的目的。

标签: python configuration ini


【解决方案1】:

我知道聚会迟到了,但有人可能会觉得这很方便。 你要问的是 value interpolation 结合 os.environ

金字塔?

这样做的逻辑是不寻常的,如果一个人有一个金字塔服务器(由开箱即用的配置文件读取)而想要模仿一个 django (它总是设置为读取操作系统),通常会发生这种情况.环境)。
如果您使用的是金字塔,那么 pyramid.paster.get_app 具有参数选项:如果您将 os.environ 作为字典传递,则可以在 ini 中使用%(variable)s。并不是说这不是特定于 pyramid.paster.get_app 的,如下一节所示(但我的猜测是 get_app 就是这种情况)。

app.py

from pyramid.paster import get_app
from waitress import serve
import os

app = get_app('production.ini', 'main', options=os.environ)
serve(app, host='0.0.0.0', port=8000, threads=50)

生产.ini:

[app:main]
sqlalchemy.url = %(SQL_URL)s
...

配置解析?

以上使用configparser basic interpolation

假设我有一个名为config.ini 的文件

[System]
conda_location = %(CONDA_PYTHON_EXE)

以下将起作用...

import configparser, os
cfg = configparser.ConfigParser()
cfg.read('config.ini')
print(cfg.get('System', 'conda_location', vars=os.environ))

【讨论】:

    【解决方案2】:

    我认为:thinking_face,使用 .env 并在 config.py from dotenv import load_dotenv() 和下一行 load_dotenv() 中,它会从 .env 文件加载环境

    【讨论】:

      猜你喜欢
      • 2016-10-19
      • 2023-03-22
      • 1970-01-01
      • 2017-07-09
      • 2018-11-03
      • 2021-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多