在编写 Python 包时,如何管理环境变量一直是一个常见但不易解决的问题。特别是当你的包需要在不同环境下运行时,如何确保配置正确而又不暴露敏感信息?本文将探讨如何将.env文件集成到 Python 包的构建和分发过程中,同时避免敏感信息泄露。
问题背景
假设我们有一个 Python 包,它依赖于Config类中的硬编码值。现在,我们希望将这些值移到一个.env文件中,并在运行时从.env文件加载这些配置。这样做可以提高配置的灵活性和安全性。
解决方案
1. 不打包.env文件
首先,明确一点:不要将包含敏感信息的.env文件打包到你的 Python 包中。这是因为:
- 敏感信息如 API 密钥、数据库凭证等不应该被公开或分发。
- 每次分发包时创建新的
.env文件是繁琐的,且容易出错。
实例
在我们的项目中,我们使用 Pydantic 来管理配置。Pydantic 支持从.env文件读取环境变量,这使得我们可以轻松地将配置从代码中分离出来: