【问题标题】:Environment variable coming up as 'None" using dotenv python使用 dotenv python 将环境变量显示为“无”
【发布时间】:2018-10-25 14:23:12
【问题描述】:

我正在尝试使用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)

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

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

【问题讨论】:

  • 让我补充一点,我在运行此程序时使用的是虚拟环境 (venv)。
  • 直接来自“入门”文档,看起来您没有正确初始化 .env 文件的位置。请参阅以下部分:load_dotenv(dotenv_path=env_path)
  • @William_Wilson - 解决了这个问题。非常感谢!

标签: python python-3.x environment-variables


【解决方案1】:

你必须给出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)

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。在对我的代码进行快速测试后,我注意到

    from dotenv import load_dotenv
    
    load_dotenv(".env")
    

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

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

    from dotenv import load_dotenv, find_dotenv
    
    load_dotenv(find_dotenv())
    

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

    【讨论】:

      【解决方案3】:
      import os
      from dotenv import load_dotenv
      
      ### give the full path 
      path='/user/.../.env'
      
      load_dotenv(dotenv_path=path,verbose=True)
      
      test_var = os.getenv("TEST_VAR")
      
      print(test_var)
      

      【讨论】:

      • 欢迎来到 Stack Overflow!虽然此代码 sn-p 可能是解决方案,但including an explanation 确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
      【解决方案4】:

      load_dotenv() 也应该在没有指定路径的情况下工作,如 here 所述:“load_dotenv 将从当前目录或其任何父目录中名为 .env 的文件或从指定路径加载环境变量。”无论如何,它对我或 OP 都不起作用。

      就我而言,在代码中指定路径不是一个可行的选择,但我需要自动找到 .env 文件。长话短说,这样就可以了:

      load_dotenv(find_dotenv())
      

      【讨论】:

        猜你喜欢
        • 2020-03-08
        • 2015-09-02
        • 2020-02-14
        • 1970-01-01
        • 1970-01-01
        • 2023-02-08
        • 2021-11-05
        • 2021-11-08
        • 1970-01-01
        相关资源
        最近更新 更多