运行 django 应用程序中的 .env 文件在启动时带有 python-dotenv shell

Run .env file in django app with python-dotenv when starting shell

当 运行 宁 ./manage.py shell.

时,我正在尝试使用 python-dotenv 到 运行 .env 文件

但是当我开始 shell 时 .env 不是 运行。与正常情况没有什么不同。

我做了什么:

  1. 在我的虚拟环境中 python-dotenv 安装 pip 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 的新手。我是否漏掉了一些明显的东西?

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

python-dotenv 自述文件声明您可以在 .env 文件中使用 export,但包会忽略它。这样就可以通过从 shell.

调用 source .env 来设置环境变量

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

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

删除 echo 行后,我只收到 True 作为响应,PYTHONSTARTUP 已设置。

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

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

出乎您的意料。这应该有效:

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