顺便说下,dotenv似乎不会转换布尔类型。
所以你在env配置MAIL_USE_TSL=True,用os.getenv('MAIL_USE_TSL')获取的变量还是字符串,最后赋值给MAIL_USE_TSL。造成的一个bug就是如果设置了False是不会成功的。因为
>>> bool('False')
True
测试代码:
.env:
boolean1 = True
boolean2 = true
boolean3 = 'true'
load.py:
import os
from dotenv import load_dotenv
dotenv_path = os.path.join(os.path.abspath(os.path.dirname(__file__)), '.env')
if os.path.exists(dotenv_path):
load_dotenv(dotenv_path, override=True)
for b in ('boolean1', 'boolean2', 'boolean2'):
print(type(os.getenv(b)), os.getenv(b))
# print
# <class 'str'> True
# <class 'str'> true
# <class 'str'> true