在Python应用程序中使用.env文件管理环境变量

原始地址:https://dev.to/jakewitcher/using-env-files-for-environment-variables-in-python-applications-55a1

应用程序被部署后,在开发过程中必须考虑应用程序运行的环境以及应用程序执行任务所需的敏感或环境特定信息。
环境变量是软件开发人员向应用程序提供此类信息的关键方式之一,但是如果设置这些变量在本地机器的环境上,运行和测试依赖于环境变量的应用程序可能会很麻烦。
设置或更改环境变量的过程很耗时间,而且随着时间的推移,要管理的环境变量数量变得无法控制。最终,命名冲突成为一个问题,并且每个新变量都需要一个冗长的前缀来区分它与类似变量。
使用
.env 文件将使您能够在本地开发中使用环境变量,而不会污染全局环境命名空间。它还将使您的环境变量名称和值隔离到使用它们的同一项目中。
.env 文件是一个文本文件,其中包含应用程序所需的所有环境变量的键值对。该文件包含在您的项目中,但不保存到源代码控制中,以免将潜在的敏感信息置于风险中。

# 在 .env 文件中定义的环境变量
GCP_PROJECT_ID=my-project-id
SERVICE_ACCOUNT_FILE=path/to/serviceAccountCredentials
STORAGE_BUCKET_NAME=my-super-important-data

几乎每种编程语言都有一个包或库可以用于从
.env 文件中读取环境变量,而不是从本地环境中读取。对于 Python,这个库是
python-dotenv。一旦安装了该库,python-dotenv 的一个常见用例只需要在您的项目中添加两行代码。

from dotenv import load_dotenv
load_dotenv()

load_dotenv() 首先会查找一个
.env 文件,如果找到了,它将从文件中加载环境变量,并使它们能够像其他环境变量一样在您的项目中使用。

import os
from dotenv import load_dotenv
load_dotenv()
GCP_PROJECT_ID = os.getenv('GCP_PROJECT_ID')
SERVICE_ACCOUNT_FILE = os.getenv('SERVICE_ACCOUNT_FILE')
STORAGE_BUCKET_NAME = os.getenv('STORAGE_BUCKET_NAME')

如果在
.env 文件中未找到环境变量,
load_dotenv 将在主机环境中按给定名称搜索变量。这意味着在您的项目本地运行且存在
.env 文件时,将使用文件中定义的变量。当您的项目部署到虚拟机或Docker容器等主机环境中,该环境将使用主机环境中定义的环境变量。
默认情况下,load_dotenv 将在当前工作目录或任何父目录中查找
.env 文件,但如果您的特定用例要求将其存储在其他位置,则还可以指定路径。

from dotenv import load_dotenv
from pathlib import Path
dotenv_path = Path('path/to/.env')
load_dotenv(dotenv_path=dotenv_path)

对于大多数应用程序,这就是您需要使用
python-dotenv 的全部信息,但是还有一些其他功能可以在 python-dotenv 文档中了解到。
使用
.env 文件的一个好处是,很容易从一开始就在开发中考虑环境变量。在开发过程的早期阶段考虑这些事情将使您更容易为部署准备您的应用程序。
如果您在 Docker 容器中部署应用程序,可以使用
–env-file .env 参数以及您的
docker run 命令轻松过渡到在本地运行的容器中运行和测试应用程序。Docker 将在容器的环境中设置与通过
python-dotenv 使用的相同的环境变量。
没有
.env 文件,环境变量是测试应用程序在本地运行时的一部分,尽管很麻烦但却是必要的。通过使用
.env 文件和
python-dotenv 库,处理环境变量变得更加可管理,并且您可以从一开始就以部署为目标进行开发。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Docker搭建Spring Boot项目所需的Python和JDK环境是一种方便且可移植的方式。下面是基本的步骤: 1. 首先,安装Docker并确保它能正常运行。 2. 创建一个Dockerfile,用于构建镜像。在项目根目录下创建一个名为 `Dockerfile` 的文件,并添加以下内容: ```dockerfile # 使用基础的Java镜像作为基础 FROM openjdk:11-jdk # 安装Python RUN apt-get update && apt-get install -y python3 python3-pip # 设置环境变量 ENV JAVA_HOME /usr/local/openjdk-11 ENV PATH $JAVA_HOME/bin:$PATH # 设置Python环境变量 ENV PYTHON_HOME /usr/bin/python3 ENV PATH $PYTHON_HOME:$PATH # 安装所需的Python包 RUN pip3 install <your_python_dependencies> # 添加你的Spring Boot项目到容器 ADD <your_spring_boot_project> /app # 设置工作目录 WORKDIR /app # 运行Spring Boot应用 CMD ["java", "-jar", "<your_spring_boot_jar_file>"] ``` 注意替换 `<your_python_dependencies>` 为你的Python依赖包,`<your_spring_boot_project>` 为你的Spring Boot项目路径,`<your_spring_boot_jar_file>` 为你的Spring Boot可执行jar文件。 3. 构建Docker镜像。在命令行,进入到项目根目录,并执行以下命令: ``` docker build -t <your_image_name> . ``` 注意替换 `<your_image_name>` 为你想要给镜像起的名称。 4. 运行Docker容器。执行以下命令: ``` docker run -p <host_port>:<container_port> <your_image_name> ``` 将 `<host_port>` 替换为你想要映射到容器的主机端口, `<container_port>` 替换为容器内运行Spring Boot应用的端口号。 这样,你就可以使用Docker搭建包含Python和JDK环境的Spring Boot项目了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值