首页 > 解决方案 > 启动 shell 时使用 python-dotenv 在 django 应用程序中运行 .env 文件

问题描述

我正在尝试使用python-dotenv在运行.env时运行文件./manage.py shell

但是.env当我启动 shell 时没有运行。没有什么与正常不同的事情发生。

我做了什么:

  1. 安装python-dotenvpip install python-dotenv我的虚拟环境中
  2. .env在与我的项目相同的目录中添加了一个文件settings.py

下面还添加到settings.py

from dotenv import load_dotenv
load_dotenv()

对于上下文,我.env看起来像:

export PYTHONSTARTUP=`pwd`/.pythonrc.py
echo "environment variables set"

我正在导出.pythonrc.py,所以我可以在加载 shell 时进行一些导入。

我对 Django 很陌生。我错过了一些明显的东西吗?

标签: pythondjangoenvironment-variablesdotenv

解决方案


问题是您将 env 文件视为 shell 文件。

python-dotenv 自述文件指出你可以export在你的.env文件中使用,它会被包忽略。这样可以通过source .env从 shell 调用来设置环境变量。

但是,您不能以这种方式运行 shell 脚本。当我尝试加载您的示例时,我收到了以下消息:

Python-dotenv could not parse statement starting at line 2
True

删除echo线路后,我得到True了回应PYTHONSTARTUP并被设置。

但是,还有另一个问题,因为您也依赖于 shell 脚本的值PYTHONSTARTUP。它设置为

'PYTHONSTARTUP': '`pwd`/.pythonrc.py'

不是你所期望的。这应该有效:

export PYTHONSTARTUP2=${PWD}/.pythonrc.py

推荐阅读