【问题标题】:.env data not accessible.env 数据无法访问
【发布时间】:2022-01-08 05:16:37
【问题描述】:

我制作了 .env 和 .gitignore 文件以及其他一些文件。 .env 在 gitignore 中,我已经在 GitHub 上推送了所有文件。结果如下:

  • .env 未跟踪且未推送到存储库 [正确行为]
  • .env 文件中的数据无法访问 [找不到类型的令牌]
from dotenv import load_dotenv
import os

load_dotenv()

TOKEN = os.getenv('TOKEN') 

我已经尝试在 github 上手动推送 .env 并且一切顺利,我可以访问 .env 中的数据 但是用 git bash 推送,却无法访问。如何同时使用 .gitignore 和 .env 访问数据?

【问题讨论】:

  • 在你做load_dotenv()之前做一个os.getcwd(),它应该打印出.env文件将被搜索的目录。

标签: python-3.x gitignore dotenv


【解决方案1】:

尝试os.environ.get 从.env 获取令牌。

from dotenv import load_dotenv
import os

load_dotenv()

TOKEN = os.environ.get("TOKEN")
print(TOKEN)

另外,请确保 .env 文件与 python 文件位于同一目录中。如果不是,则必须加入目录,或使用find_dotenv 函数,如下所示:

import os
from dotenv import load_dotenv, find_dotenv

load_dotenv(find_dotenv())

TOKEN = os.environ.get("TOKEN")
print(TOKEN)

【讨论】:

  • 当我使用 os.environ.get("TOKEN") 时不起作用。它再次返回“NoneType”对象。另外,我已将 .env 和 bot.py 放在同一目录中。
  • 您是从项目根目录运行脚本吗?如果脚本位于子目录中,并且您将 .env 放在同一目录中,则 dotenv 在项目根目录中查找 .env 文件。这是一个example project 来显示上述代码工作的两种情况。
  • 是的,.env 和 script.py 都在根文件夹中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-22
  • 1970-01-01
  • 2022-08-18
  • 2018-11-20
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多