问题描述
img {
border: 20px solid black;
border-image: url("xyzborderimage.jpg") 30 round;
border-radius: 2px;
height: 500px;
width: 250;
}
在我的 main.py 文件中。 load_dotenv 返回 True。然后在文件中我使用了一些从其他文件导入的类方法。这些方法在我的 .env 文件中使用环境变量。我对一件事感到困惑。当我调试时,我可以通过以下方式访问变量:
from dotenv import load_dotenv,find_dotenv
load_dotenv(find_dotenv(),verbose=True)
但是当我说
os.getenv('API_KEY')
来自除 main.py 之外的其他 .py 文件,它显示无。这是怎么回事?
好的,我已经隔离了正在发生的事情,这是一个 .py 文件,其中有一个我正在从 main.py 调用的类
print(os.getenv('API_KEY'))
不确定我知道为什么会这样?
解决方法
这是我希望显示您遇到的行为的最小示例:
# ./main.py
from dotenv import load_dotenv,find_dotenv
import os
import helper # executes all the code in helper.py,below
load_dotenv(find_dotenv(),verbose=True) # loads the .env file into the environment
print(os.getenv('API_KEY')) # WORKS!
foo = helper.SomeClass().print_env() # also works!
# ./helper.py
import os
print(os.getenv('API_KEY')) # FAILS!
class SomeClass():
def print_env():
print(os.getenv('API_KEY'))
这是有道理的,因为对 import helper
的评论。当您导入 python 模块时,它会立即执行该模块中的所有代码。由于您在运行 load_dotenv
之前运行导入,因此环境尚未加载您期望的密钥。但是,当您将调用放入一个类中时,当您实例化该类时,环境已经被填充。