Joh*_*jei 8 python django config decouple
我被迫将我的.env文件保存在项目根目录之外的非标准路径中(完全在一个单独的目录中).
假设我有我的Django项目/var/projects/my_project,尽管我的.env文件存放/opt/envs/my-project/.env在我的文件中SECRET_KEY.在我的settings.py文件中,我想.env在该路径中明确使用该文件,以便我仍然可以这样做:
from decouple import config
secret_key = config('SECRET_KEY')
Run Code Online (Sandbox Code Playgroud)
Joh*_*jei 19
我想到了.
而不是导入decouple.config和执行通常config('FOOBAR'),使用创建一个新decouple.Config对象RepositoryEnv('/path/to/env-file').
from decouple import Config, RepositoryEnv
DOTENV_FILE = '/opt/envs/my-project/.env'
env_config = Config(RepositoryEnv(DOTENV_FILE))
# use the Config().get() method as you normally would since
# decouple.config uses that internally.
# i.e. config('SECRET_KEY') = env_config.get('SECRET_KEY')
SECRET_KEY = env_config.get('SECRET_KEY')
Run Code Online (Sandbox Code Playgroud)
希望这有助于某人.
小智 6
如果您查看解耦实现,config 只是一个预先实例化的 AutoConfig:
config = AutoConfig()
Run Code Online (Sandbox Code Playgroud)
但是 AutoConfig 将作为可选参数,search_path因此我们可以执行以下操作:
from decouple import AutoConfig
config = AutoConfig(search_path='/opt/envs/my-project')
Run Code Online (Sandbox Code Playgroud)
然后你可以像往常一样:
secret_key = config('SECRET_KEY')
Run Code Online (Sandbox Code Playgroud)