python - 如何从 .env 文件成功加载 API 密钥
问题描述
我一直在参考网络上的教程,但即使我完全按照它们进行操作,也会出现问题。
我试图在 .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__'])
解决方案
默认情况下,.env应该与您执行的文件处于同一级别。但是您可以指定路径作为load_dotenv
方法的参数。也许您应该尝试摆脱该find_dotenv
方法并直接给出.env的绝对路径,如下所示:
import os
from dotenv import load_dotenv, find_dotenv
from pathlib import Path
load_dotenv(Path("/my/path/.env"))
print(os.getenv("CONNSTRING"))
推荐阅读
- angular - 我想在 Ionic 3 中获取我的购物车中所有产品价格的总和
- python - 如何在 pyspark 数据框中找到每个列表的第一个值的中位数?
- json - Spark 读取多个文件:双引号替换为 %22
- node.js - TypeError:无法读取未定义的属性“onReady”
- python - Python3 - 运行单元测试时输出 __main__ 文件(来自实际程序,而不是单元测试)
- java - 将加密/解密密钥存储到静态变量中是否安全?
- javascript - 是否可以使用 JavaScript 将行号打印到控制台或 NetSuite 上的执行日志?
- xamarin - 如何使用共享 VM 将属性值从一个选项卡屏幕共享到另一个选项卡屏幕?
- c# - EF6 - 为什么我的所有 DbSet 在枚举它们时都会抛出 InvalidOperationException?
- mongodb - 如何在mongodb的一次执行中更新具有不同值的多行?