You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据Docker使用场景动态配置setup.py的install_requires?

动态调整setup.py中的Django版本(基于Docker环境)

问题背景

需要根据是否在Docker环境中运行,自动切换setup.py里的Django依赖版本:

  • Docker环境:安装django==4.0
  • 非Docker环境:保持原配置django==2.0

之前尝试通过环境变量实现但未成功,代码如下:

if 'ENV_VAR' in os.environ:
  django = ['django == 4.0']
else:
 django = ['django == 2.0']

setup(
install_requires = django
)

常见失败原因

  1. 缺少os模块导入:代码中未添加import os,导致无法读取环境变量
  2. 环境变量未正确设置:Docker容器/镜像中未配置对应的环境变量,或者变量名称不匹配
  3. 依赖版本写法问题:django == 4.0中的空格可能导致解析异常,规范写法是django==4.0(无空格)

可行解决方案

1. 完整的setup.py代码

确保导入必要模块,修正版本写法,使用更明确的环境变量名称:

import os
from setuptools import setup

# 读取环境变量,判断是否为Docker环境
if os.environ.get('USE_DOCKER'):
    django_req = ['django==4.0']
else:
    django_req = ['django==2.0']

setup(
    name='your-project-name',  # 替换为你的项目名称
    version='1.0.0',           # 替换为你的项目版本
    install_requires=django_req
)

2. Docker环境配置

在Dockerfile中添加环境变量声明,确保构建镜像时自动注入:

# 其他Dockerfile指令(如基础镜像、复制代码等)
ENV USE_DOCKER=1
# 安装依赖
RUN pip install .

或者在运行容器时临时传递环境变量:

docker run -e USE_DOCKER=1 your-image-tag

验证方法

  • 本地环境:直接执行pip install .,查看安装的Django版本为2.0
  • Docker环境:构建镜像后运行,进入容器执行pip list,确认Django版本为4.0

内容的提问来源于stack exchange,提问作者devel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 00:46:04