我被迫将我的.env
文件保存在项目根目录之外的非标准路径中(完全在一个单独的目录中)。
假设我在/var/projects/my_project
中有我的Django项目,但我.env
中的/opt/envs/my-project/.env
文件存储了我的SECRET_KEY
。在我的settings.py
文件中,我想在该路径中明确使用.env
文件,以便我仍然可以执行此操作:
from decouple import config
secret_key = config('SECRET_KEY')
答案 0 :(得分:18)
我明白了。
使用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')
希望这有助于某人。
答案 1 :(得分:2)
如果查看解耦实现,则config只是预先实例化的AutoConfig:
config = AutoConfig()
但是AutoConfig将search_path
作为可选参数,因此我们可以执行以下操作:
from decouple import AutoConfig
config = AutoConfig(search_path='/opt/envs/my-project')
然后您可以照常进行操作:
secret_key = config('SECRET_KEY')