我被迫将我的
.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')
并执行通常的
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')
但是 AutoConfig 作为可选参数
config = 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
文件。(旧的方法不再起作用了。-从解耦导入Config,RepositoryEnv不起作用,AutoConfig没有search_path作为参数。)
这很方便,因为您希望将
.env
保留在本地计算机上的项目文件夹中,并且您希望在登台/产品服务器上进行干净的签出,因此
settings.ini
最好位于项目文件夹之外。 更新:
settings.ini