当前位置: 代码网 > it编程>前端脚本>Python > Python项目中存储配置信息方式汇总

Python项目中存储配置信息方式汇总

2026年08月25日 Python 我要评论
环境变量是操作系统中存储配置信息的键值对,用于在不同环境(开发/测试/生产)中切换配置,避免敏感信息(密码、密钥)硬编码在代码中。一、配置环境变量的方式1. 操作系统级别设置linux/macos#

环境变量是操作系统中存储配置信息的键值对,用于在不同环境(开发/测试/生产)中切换配置,避免敏感信息(密码、密钥)硬编码在代码中

一、配置环境变量的方式

1. 操作系统级别设置

linux/macos

# 临时设置(当前终端会话有效)
export database_url="postgresql://localhost/mydb"
export api_key="sk-123456"

# 永久设置(写入配置文件)
echo 'export database_url="postgresql://localhost/mydb"' >> ~/.bashrc   # 或 ~/.zshrc
source ~/.bashrc

# 查看环境变量
echo $database_url
env | grep database

windows (cmd)

# 临时设置
set database_url=postgresql://localhost/mydb

# 永久设置(通过系统设置)
setx database_url "postgresql://localhost/mydb"

windows (powershell)

# 临时设置
$env:database_url="postgresql://localhost/mydb"

# 永久设置
[environment]::setenvironmentvariable("database_url", "postgresql://localhost/mydb", "user")

2. 使用.env文件(推荐)

.env 文件是项目级别的环境变量配置,应该被添加到 .gitignore 中,避免提交到版本控制。

# .env 文件示例
database_url=postgresql://localhost:5432/mydb
api_key=sk-1234567890
debug=true
secret_key=your-secret-key-here
redis_url=redis://localhost:6379/0

3. 使用python-dotenv读取.env

# 安装依赖
pip install python-dotenv
# 方式1:自动查找 .env 文件
from dotenv import load_dotenv
import os

load_dotenv()  # 加载 .env 文件

db_url = os.getenv("database_url")
api_key = os.environ.get("api_key")

# 方式2:指定 .env 文件路径
load_dotenv("/path/to/.env.production")

# 方式3:覆盖已有的环境变量
load_dotenv(override=true)

4. ide 中配置(pycharm / vs code)

pycharm

  1. run → edit configurations
  2. environment variables 中添加 key=value
  3. 或点击 ... 图标批量添加

vs code

在 .vscode/launch.json 中配置:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "python: current file",
            "type": "python",
            "request": "launch",
            "env": {
                "database_url": "postgresql://localhost/mydb",
                "api_key": "sk-123456"
            }
        }
    ]
}

5. docker 容器中配置

# 方式1:-e 参数
docker run -e database_url="postgresql://db/mydb" myapp

# 方式2:--env-file 参数
docker run --env-file .env myapp

# 方式3:docker-compose.yml
# docker-compose.yml
version: '3.8'
services:
  app:
    build: .
    environment:
      - database_url=postgresql://db/mydb
      - api_key=${api_key}  # 从宿主机环境变量传入
    env_file:
      - .env

二、读取环境变量的方式

1. 基础读取(os.environ)

import os
# 获取环境变量(不存在返回 none)
db_url = os.environ.get("database_url")
print(db_url)
# 获取环境变量(不存在时使用默认值)
api_key = os.environ.get("api_key", "default-key")
# 直接访问(不存在会抛出 keyerror)
debug = os.environ["debug"]
# 检查环境变量是否存在
if "database_url" in os.environ:
    print("已配置数据库连接")

2. 类型转换

import os
# 字符串转布尔值
debug = os.getenv("debug", "false").lower() == "true"
# 字符串转整数
port = int(os.getenv("port", "8080"))
# 字符串转列表
allowed_hosts = os.getenv("allowed_hosts", "").split(",")
# 使用更强大的库:python-decouple
from decouple import config
debug = config("debug", default=false, cast=bool)
port = config("port", default=8080, cast=int)

3. 使用os.getenv()简写

import os
# os.getenv() 不存在返回 none,与 os.environ.get() 相同
db_url = os.getenv("database_url")
# 设置默认值
api_key = os.getenv("api_key", "default-key")

三、项目示例

项目结构

myproject/
├── .env                # 环境变量文件(不提交到 git)
├── .env.example        # 环境变量模板(提交到 git)
├── .gitignore          # 忽略 .env
├── config.py           # 配置读取模块
├── main.py
└── requirements.txt

.env文件

# 环境标识
environment=development
debug=true

# 数据库配置
database_url=postgresql://localhost:5432/mydb
database_pool_size=10

# api 配置
api_key=sk-test-123456
api_secret=test-secret

# redis 配置
redis_url=redis://localhost:6379/0

# 应用配置
secret_key=your-secret-key
allowed_hosts=localhost,127.0.0.1

.env.example文件(提交到 git)

# 环境标识
environment=development
debug=false

# 数据库配置
database_url=postgresql://localhost:5432/mydb
database_pool_size=10

# api 配置
api_key=
api_secret=

# redis 配置
redis_url=redis://localhost:6379/0

# 应用配置
secret_key=change-this-in-production
allowed_hosts=localhost,127.0.0.1

config.py- 配置管理模块

import os
from dotenv import load_dotenv
from pathlib import path
# 加载 .env 文件
# 优先使用 .env 文件,如果没有则使用环境变量
env_file = path(".env")
if env_file.exists():
    load_dotenv(env_file)
class config:
    """应用配置类"""
    # 环境配置
    environment = os.getenv("environment", "production")
    debug = os.getenv("debug", "false").lower() == "true"
    # 数据库配置
    database_url = os.getenv("database_url")
    database_pool_size = int(os.getenv("database_pool_size", "10"))
    # api 配置
    api_key = os.getenv("api_key")
    api_secret = os.getenv("api_secret")
    # redis 配置
    redis_url = os.getenv("redis_url", "redis://localhost:6379/0")
    # 应用配置
    secret_key = os.getenv("secret_key")
    allowed_hosts = os.getenv("allowed_hosts", "").split(",")
    @classmethod
    def validate(cls):
        """验证必要的配置是否存在"""
        required = ["database_url", "secret_key"]
        missing = [key for key in required if not getattr(cls, key)]
        if missing:
            raise valueerror(f"缺少必要的环境变量: {', '.join(missing)}")
        return true
# 实例化配置
config = config()

.gitignore文件

# 环境变量文件
.env
.env.local
.env.*.local

# python 缓存
__pycache__/
*.pyc

main.py- 使用配置

from config import config
# 验证配置
config.validate()
print(f"环境: {config.environment}")
print(f"调试模式: {config.debug}")
print(f"数据库: {config.database_url}")
print(f"允许的主机: {config.allowed_hosts}")
# 在应用中使用
if config.debug:
    print("开发环境启动...")
else:
    print("生产环境启动...")

五、其他

原则说明
不要硬编码敏感信息永远不要写在代码里
使用 .env开发环境推荐使用 .env 文件
提交 .env.example提供配置模板,但不提交真实值
忽略 .env确保 .env 在 .gitignore 中
提供默认值使用 os.getenv("key", "default") 提供默认值
类型转换注意环境变量都是字符串,需要手动转换
验证必要配置启动时检查必要的环境变量是否存在

备注:多环境下用不同 .env 文件,使用 pydantic 配置更安全。

以上就是python项目中存储配置信息方式汇总的详细内容,更多关于python存储配置信息方式的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com