[英]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.