簡體   English   中英

如何使用 python-decouple 在預期路徑之外加載 .env 文件?

[英]How do you use python-decouple to load a .env file outside the expected paths?

我被迫將我的.env文件保存在我的項目根目錄之外的非標准路徑中(完全在一個單獨的目錄中)。

假設我在/var/projects/my_project有我的 Django 項目,盡管我在/opt/envs/my-project/.env中有我的.env文件,我的SECRET_KEY存儲在其中。 在我的settings.py文件中,我想在該路徑中顯式使用.env文件,以便我仍然可以這樣做:

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

我想到了。

不是導入decouple.config並執行通常的config('FOOBAR')config('FOOBAR')使用RepositoryEnv('/path/to/env-file')創建一個新的decouple.Config對象。

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

希望這有助於某人。

如果您查看解耦實現,config 只是一個預先實例化的 AutoConfig:

config = AutoConfig()

但是 AutoConfig 將search_path作為可選參數,因此我們可以執行以下操作:

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

然后你可以像往常一樣:

secret_key = config('SECRET_KEY')

現在, django-decouple==2.1支持在項目目錄的任何父目錄中包含settings.ini.env文件。

(舊方法不再起作用。-從解耦導入配置,RepositoryEnv 不起作用,AutoConfig 沒有 search_path 作為參數。)

這很方便,因為您希望將settings.ini保留在本地計算機上的項目文件夾中,並且您希望在登台/生產服務器上進行干凈的檢出,因此settings.ini最好位於項目文件夾之外。

暫無
暫無

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

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