我正在尝试为我的项目设置.env文件。但这似乎不正确。
我将.env文件存储在与config.py文件相同的文件夹中,如下所示。
|__run.py
|___|myproject
|__config.py
|__.envconfig.py文件中的代码:
from starlette.config import Config
from starlette.datastructures import Secret, CommaSeparatedStrings
config = Config(".env")
BACKHUG_JWT_AES_KEY = config('BACKHUG_JWT_AES_KEY', default=None)
print(type(BACKHUG_JWT_AES_KEY))
print(BACKHUG_JWT_AES_KEY).env文件中的数据:
BACKHUG_JWT_AES_KEY="SAMPLE_AES_KEY"但我得到的结果是
<class 'NoneType'>
None我不知道它为什么不反对。我怎么才能修好它?
我从一个run.py文件中运行我的项目。
run.py文件中的代码:
import uvicorn
if __name__ == "__main__":
uvicorn.run("myproject.main:app", host="0.0.0.0", port=8888, reload=True)发布于 2020-12-10 08:11:32
还有更好的办法!
为此使用FastAPI和Pydantic。Pydantic提供了一个很棒的BaseSettings类。此外,我们有很好的设置和环境变量文档。
通过继承Pydantic的BaseSettings创建一个BaseSettings类
from pydantic import BaseSettings
class Settings(BaseSettings):
backhug_jwt_access_key: str
class Config:
env_file = "myproject/.env"此设置类会自动从.env文件中读取变量。然后,从您的主文件中可以这样使用它:
from . import config
from functools import lru_cache
from fastapi import Depends, FastAPI
app = FastAPI()
@lru_cache()
def get_settings():
return config.Settings()
@app.get("/info")
async def info(settings: config.Settings = Depends(get_settings)):
return {"jwt_key": settings.backhug_jwt_access_key}发布于 2020-12-10 04:54:59
删除值中的双引号,然后重试:
环境档案:
BACKHUG_JWT_AES_KEY=SAMPLE_AES_KEY发布于 2020-12-10 07:34:02
https://stackoverflow.com/questions/65228696
复制相似问题