Python多环境部署核心是配置隔离与环境感知,通过ENV变量动态加载config/dev.py等对应配置,敏感信息用python-decouple或环境变量外部注入,依赖按requirements/base.txt、dev.txt等分层管理,容器化用Docker多阶段构建和K8s ConfigMap/Secret强化隔离。

Python多环境部署的核心是让开发、测试、生产等不同阶段互不干扰,关键靠配置隔离与环境感知。不是简单复制代码,而是通过机制让同一套代码在不同环境下自动加载对应配置。
环境变量驱动配置加载
用ENV环境变量标识当前运行环境(如dev、staging、prod),程序启动时读取并加载对应配置模块:
- 项目结构建议:在config/下按环境分文件,如config/dev.py、config/prod.py
- 主配置入口(如config/__init__.py)根据os.environ.get("ENV")动态导入对应模块
- 避免硬编码环境名,统一由外部注入(如export ENV=prod或容器启动时指定)
敏感配置绝不进代码库
数据库密码、API密钥、JWT密钥等必须从外部加载,禁止写在.py配置文件中:
- 推荐使用python-decouple或dotenv加载.env文件(该文件不提交Git)
- 生产环境优先用系统环境变量,比.env更安全可控
- 可设默认值兜底(如config("DB_PASSWORD", default="devpass")),但生产必须显式提供
依赖版本按环境收敛
不同环境可能需要不同依赖(如开发用pytest,生产不用),用分层requirements管理:
立即学习“Python免费学习笔记(深入)”;
- requirements/base.txt:所有环境共用的基础依赖(如flask==2.3.3)
- requirements/dev.txt:继承base,追加开发专用包(-r base.txt + pytest>=7.0)
- 部署时只安装对应环境的requirements(如pip install -r requirements/prod.txt)
容器化部署强化环境边界
Docker能天然隔离运行时环境,配合多阶段构建进一步精简生产镜像:
- Dockerfile中用ARG ENV=dev声明构建参数,RUN时传入真实值
- 多阶段构建:build阶段装全部依赖(含编译工具),final阶段仅COPY编译产物和prod.txt依赖
- Kubernetes中通过envFrom: configMapRef或secretRef注入配置,不写死在镜像里










