【问题标题】:How to set environment variable based on development or production in FastAPI?如何在 FastAPI 中根据开发或生产设置环境变量?
【发布时间】:2021-09-10 08:09:04
【问题描述】:

我想根据开发和生产有不同的环境变量 但我似乎无法为 FastAPI 找到与此主题相关的任何内容。

我是否可以让 .env、.env.local、.env.prod 拥有不同的环境变量

【问题讨论】:

    标签: python environment-variables development-environment production-environment fastapi


    【解决方案1】:

    我认为您不需要多个文件。通常它是如何完成的,有一个具有默认值的配置文件,通常这是您的“本地”配置文件。对于 prod、staging 和其他环境,您可以通过设置环境变量来覆盖这些设置,现在大多数主机都支持它。它更安全,您不必在存储库中公开生产机密和密钥。

    此库是您的代码使用的一个示例: https://github.com/theskumar/python-dotenv

    编辑

    例如,如果您的应用程序托管在 Heroku 中,Heroku CLI 的 heroku config 命令可以轻松管理应用程序的配置变量:

    heroku config:set SOME_CONFIG_I_NEED=value for production
    

    您还可以在 Heroku 仪表板的应用设置选项卡中编辑配置变量。

    更多信息请参考Heroku documentation

    在 Heroku 中设置环境变量后,您可以通过以下方式从 Python 代码访问它们(使用 python-dotenv):

    首先,安装python-dotenv

    pip install python-dotenv
    

    现在,在项目的根目录中创建一个名为 .env 的文件,其内容如下:

    # Development settings
    SOME_CONFIG_I_NEED=value for development
    

    现在在你的 python 文件中:

    from dotenv import load_dotenv
    
    load_dotenv()  # take environment variables from .env.
    
    SOME_CONFIG_I_NEED = os.environ.get("SOME_CONFIG_I_NEED")
    
    print(SOME_CONFIG_I_NEED)  # This will print "value for development" when running on local, and will print "value for production" when running in Heroku.
    

    【讨论】:

    • 您好,感谢您的回复。我可以像下面的例子那样使用环境变量吗? FOO=myenvvar BAR=${FOO}.mysecondvar 在 heroku 配置变量上?
    • @AhmetK 我用一个例子编辑了我的答案。
    • 如果有帮助,记得点赞并将其标记为您问题的答案。
    • 我有另一个问题来自你的例子我可以有一个像下面这样的环境变量吗? ( MY_ENV = ${GITHUB_USERNAME}某事)
    • 你想在值上附加一些东西?
    猜你喜欢
    • 2011-08-06
    • 2019-07-13
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 2021-03-14
    • 2015-04-04
    相关资源
    最近更新 更多