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

Ubuntu 20.04下Python/Django读取os.environ自定义环境变量返回None问题

问题核心原因

  1. 配置生效操作错误
    你执行~/.profile的方式无法让环境变量作用到当前运行的shell:直接执行脚本会开启一个独立的子shell运行配置内容,子shell里的环境变量不会同步到父级shell,只有执行source ~/.profile或者. ~/.profile才能让配置的变量在当前shell会话生效。
  2. 环境变量的作用范围限制
    即使你用正确的source命令加载了配置,变量也仅在当前执行source的终端会话中生效:
  • 如果你启动Django服务使用的是另一个终端会话、或者重启过终端,变量会失效
  • 如果你的Django服务是用systemd、supervisor等托管工具后台运行,或者切换了其他用户(比如www-data)运行服务,进程无法继承当前普通用户会话的环境变量
  1. 虚拟环境的隔离特性
    从你的终端前缀(env)可以看出你使用了Python虚拟环境,虚拟环境激活时不会主动加载当前用户的.profile配置,如果你是在激活虚拟环境后才修改的.profile,没有重新加载虚拟环境或者重新source配置的话,虚拟环境的运行环境中也不会存在该变量。

对应解决方案

  • 本地开发临时测试:在启动Django服务的同一终端内执行source ~/.profile,之后再启动Django服务即可读取到变量
  • 持久化生效(适配所有运行场景):更推荐在Django项目根目录新建.env文件存储自定义环境变量,安装python-dotenv包后在settings.py中加载该文件的配置,不需要依赖系统用户的profile配置,避免不同运行环境的适配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 13:36:04