如何从 .env 文件成功加载 API 密钥

How to load API keys from .env file successfully

提问人:Nairda123 提问时间:6/30/2021 最后编辑:petezurichNairda123 更新时间:12/8/2021 访问量:3792

问:

我一直在参考网络上的教程,但即使我完全遵循它们,还是会出错。

我正在尝试在 .env 文件中隐藏一些 API 密钥,这是我的 .env(与 init.py 目录相同的目录)的内容:

CONNSTRING = DefaultEndpointsProtocol=samplesamplesameplsamplesample

这是我 init.py

from dotenv import load_dotenv, find_dotenv
load_dotenv(find_dotenv())
print(os.getenv("CONNSTRING"))

哪个不起作用?不确定错误,这是它所说的:

System.Private.CoreLib: Result: Failure  
Exception: ModuleNotFoundError: No module named '__main__'

if usecwd or _is_interactive() or getattr(sys, 'frozen', False):
  File "D:\\\", line 265, in _is_interactive
    main = __import__('__main__', None, None, fromlist=['__file__'])
python-3.x 语法 环境变量 dotenv

评论

0赞 Martin Tovmassian 6/30/2021
您的代码片段适用于我的 Ubuntu 环境。我遇到的唯一错误是您的 init.py 中缺少语句。import os
0赞 Nairda123 6/30/2021
.env 文件应与 init.py ?@MartinTovmassian 老实说,这很奇怪,当我直接传递 API 密钥时,应用程序可以工作,而当我执行上述操作时,它没有

答:

1赞 Martin Tovmassian 7/1/2021 #1

默认情况下,.env 应与执行的文件处于同一级别。 但是,您可以将路径指定为方法的参数。 也许你应该尝试摆脱这个方法,直接给出你的.env的绝对路径,如下所示:load_dotenvfind_dotenv

import os                                                                                                                                                                                                          
from dotenv import load_dotenv, find_dotenv
from pathlib import Path
load_dotenv(Path("/my/path/.env"))
print(os.getenv("CONNSTRING"))