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

Flask中os.environ.get()获取环境变量TOKEN返回None的问题

解决Flask中获取环境变量TOKEN的常见问题

我来帮你逐个拆解这些环境变量相关的问题,都是Flask开发里很容易踩的坑:

1. Windows下export命令无效,os.environ.get()返回None

export是Linux/macOS这类类Unix系统的shell命令,Windows的命令行环境不识别它,得用对应系统的命令设置临时环境变量:

  • 如果你用的是CMD,执行:set TOKEN=666
  • 如果你用的是PowerShell,执行:$env:TOKEN="666"
    设置完成后再启动你的Flask应用,os.environ.get("TOKEN")就能正常获取到值了。要是需要永久生效,直接去系统的「环境变量」面板配置就行(控制面板→系统→高级系统设置→环境变量)。

2. 用sudo python3 manage.py runserver时TOKEN为空

sudo会切换到root用户身份运行程序,而root用户的环境变量和你当前普通用户的环境变量是完全隔离的——你在普通用户下设置的TOKEN不会被root进程继承。有几个解决办法:

  • 直接把环境变量传递给sudo进程:
    sudo TOKEN=666 python3 manage.py runserver
    
  • 先切换到root用户,设置好环境变量再启动应用:
    sudo su
    export TOKEN=666
    python3 manage.py runserver
    
  • 把TOKEN添加到root用户的shell配置文件(比如/root/.bashrc)里,不过这种方式要注意权限,别让敏感信息被其他用户读取。

3. 直接设置os.environ['TOKEN']='666'的安全隐患解决办法

硬编码敏感信息到代码里确实非常危险,一旦代码提交到版本库(比如GitHub),你的TOKEN就彻底泄露了。推荐几个安全的替代方案:

  • 使用.env文件管理敏感变量:
    先安装python-dotenv包:
    pip install python-dotenv
    
    在项目根目录创建.env文件,写入:
    TOKEN=666
    
    然后在你的config.py里加载这个文件:
    from dotenv import load_dotenv
    import os
    
    load_dotenv()  # 自动加载.env文件中的环境变量
    TOKEN = os.environ.get("TOKEN")
    
    关键一步:把.env文件添加到.gitignore里,绝对不要提交到版本库。
  • 使用系统级永久环境变量:不管是Windows还是Linux/macOS,直接在系统层面设置永久环境变量,这样Flask应用启动时会自动读取,不需要在代码里硬编码。
  • Flask配置类结合环境变量:可以在配置类里通过环境变量获取值,还能加个 fallback(不过敏感信息不建议设默认值):
    class Config:
        TOKEN = os.environ.get("TOKEN")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:20:31