如何在FastAPI中根据开发或生产设置环境变量?

Ahm*_*etK 10 python development-environment environment-variables production-environment fastapi

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

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

And*_*ijo 11

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

\n

该库是您代码使用的示例之一:\n https://github.com/theskumar/python-dotenv

\n

编辑

\n

例如,如果您的应用程序托管在 Heroku 中,则heroku configHeroku CLI 的命令可以轻松管理您的 app\xe2\x80\x99s 配置变量:

\n
heroku config:set SOME_CONFIG_I_NEED=value for production\n
Run Code Online (Sandbox Code Playgroud)\n

您还可以从 Heroku 仪表板中的 app\xe2\x80\x99s 设置选项卡编辑配置变量。

\n

Heroku 仪表板

\n

请参阅Heroku 文档以获取更多信息。

\n

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

\n

首先,安装python-dotenv

\n
pip install python-dotenv\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
# Development settings\nSOME_CONFIG_I_NEED=value for development\n
Run Code Online (Sandbox Code Playgroud)\n

现在在你的 python 文件中:

\n
from dotenv import load_dotenv\n\nload_dotenv()  # take environment variables from .env.\n\nSOME_CONFIG_I_NEED = os.environ.get("SOME_CONFIG_I_NEED")\n\nprint(SOME_CONFIG_I_NEED)  # This will print "value for development" when running on local, and will print "value for production" when running in Heroku.\n
Run Code Online (Sandbox Code Playgroud)\n