如何使用 python-de Couple 加载预期路径之外的 .env 文件?

问题描述 投票:0回答:3

我被迫将我的

.env
文件保存在项目根目录之外的非标准路径中(完全在一个单独的目录中)。

假设我的 Django 项目位于

/var/projects/my_project
中,尽管我的
.env
文件位于存储我的
/opt/envs/my-project/.env
的位置。在我的
SECRET_KEY
文件中,我想明确使用该路径中的
settings.py
文件,以便我仍然可以执行此操作:

.env


python django config decoupling python-decouple
3个回答
49
投票

不要导入

from decouple import config secret_key = config('SECRET_KEY')

并执行通常的

decouple.config
操作,而是使用
config('FOOBAR')
创建一个新的
decouple.Config
对象。

RepositoryEnv('/path/to/env-file')

希望这对某人有帮助。


21
投票

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')

但是 AutoConfig 作为可选参数 
config = AutoConfig()

所以我们可以执行以下操作:


search_path

然后你可以照常做:

from decouple import AutoConfig config = AutoConfig(search_path='/opt/envs/my-project')



1
投票
secret_key = config('SECRET_KEY')

支持在项目目录的任何父目录中拥有

django-decouple==2.1
settings.ini
文件。
(旧的方法不再起作用了。-从解耦导入Config,RepositoryEnv不起作用,AutoConfig没有search_path作为参数。)

这很方便,因为您希望将

.env

保留在本地计算机上的项目文件夹中,并且您希望在登台/产品服务器上进行干净的签出,因此

settings.ini
最好位于项目文件夹之外。
更新:

我仍然会明确定义设置文件的位置。

(我目前使用的是 python-de Couple==3.8)


settings.ini

© www.soinside.com 2019 - 2024. All rights reserved.