簡體   English   中英

多個文件中的 Reading.env [Python]

[英]Reading .env in multiple files [Python]

我已將.env文件的讀取抽象為settings.py ,但我不確定這是否符合 python 的習慣用法:

# .env 

SECRET=XXXX
# settings.py
import os
from os.path import join, dirname
from dotenv import load_dotenv

dotenv_path = join(dirname(__file__), '.env')
load_dotenv(dotenv_path)

SECRET = os.environ.get("SECRET_KEY")
# app.py

from ..settings import CONSUMER_KEY

def useSecret(SECRET):

每個模塊應該直接讀取.env文件嗎?

在我看來,這是使用 singleton(這在 Python 中有點笨拙)的情況,但是 n.netheless 你可能會發現它很有用。

from os.path import join, dirname
from os import environ
from dotenv import load_dotenv

DEBUG = True

class ENV():
    _instance = None
    _loaded = False
    _env = None
    def __new__(self):
        if self._instance is None:
            self._instance = super(ENV, self).__new__(self)
        return self._instance
    def load(self, env):
        if env != self._env:
            self._env = env
            self._loaded = False
        if not self._loaded:
            path = join(dirname(__file__), env)
            if DEBUG:
                print(f'Loading {path}')
            load_dotenv(path)
            self._loaded = True
        return environ
    def get(self, env, key):
        return self.load(env).get(key)


print(ENV().get('.env', 'SECRET_KEY'))
print(ENV().get('.env', 'SECRET_KEY'))

如果你想按原樣運行這段代碼(假設你有一個帶有 SECRET_KEY 鍵的 .env 文件)那么你會看到load_dotenv只被調用一次

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM