使用 dotenv python 将环境变量显示为“无”

use*_*286 5 python environment-variables python-3.x

我正在尝试使用python-dotenv,但我尝试传递的环境变量一直显示为“无”。我在文件夹中有两个文件:.env & settings.py

我的 .env 文件中有以下内容: TEST_VAR=jkh45k3j4h5k34j

我在 settings.py 的同一个文件夹中有以下内容:

import os
from dotenv import load_dotenv
load_dotenv()

test_var = os.getenv("TEST_VAR")

print(test_var)
Run Code Online (Sandbox Code Playgroud)

我运行时得到的输出python3 settings.py是: None

为什么我无法将变量传递给 settings.py?

ind*_*Ark 7

我有同样的问题。在我的代码中快速测试后,我注意到

from dotenv import load_dotenv

load_dotenv(".env")
Run Code Online (Sandbox Code Playgroud)

无法正确加载 .env 文件(这就是它向环境变量返回 None 的原因)。该文件位于同一目录中。

当使用 find_dotenv 而不是文件路径/名称时,效果很好。

from dotenv import load_dotenv, find_dotenv

load_dotenv(find_dotenv())
Run Code Online (Sandbox Code Playgroud)

有关信息,find_dotenv 是一个自动查找 .env 文件的函数。


小智 5

你必须给出完整的路径 load_dotenv

import os
from dotenv import load_dotenv

# Get the path to the directory this file is in
BASEDIR = os.path.abspath(os.path.dirname(__file__))

# Connect the path with your '.env' file name
load_dotenv(os.path.join(BASEDIR, '.env'))

test_var = os.getenv("TEST_VAR")

print(test_var)
Run Code Online (Sandbox Code Playgroud)