Python 环境变量问题如何解决?

print(os.environ.get("V2EX"))

用 pycharm 直接运行无法获取到系统的环境变量, 但是用终端直接 python 文件名,是可以获取到的,崩溃! 有大神知道原因吗,跪谢!


Python 环境变量问题如何解决?
10 回复

这不是 python 环境变量 这是系统环境变量 确认系统里面的环境变量是全局的吗?


帖子回复:

Python里处理环境变量,最直接的方式就是用 os 模块的 os.environ。这玩意儿就是个字典,存着你当前shell的所有环境变量。

1. 获取环境变量:

import os

# 获取一个环境变量,如果不存在则返回None(或指定的默认值)
api_key = os.environ.get('API_KEY')
# 或者指定默认值
api_key = os.environ.get('API_KEY', 'default_key_here')
# 注意:直接使用 os.environ['API_KEY'] 如果变量不存在会抛出KeyError,不推荐。

2. 设置环境变量(仅在当前进程有效):

import os

# 设置一个环境变量
os.environ['DATABASE_URL'] = 'postgresql://user:pass@localhost/db'
# 之后在这个Python进程里,任何地方用 os.environ.get('DATABASE_URL') 都能拿到这个值。

重要提示: 这样设置只对当前运行的Python程序及其子进程有效。关掉程序就没了,不会影响系统或终端里其他程序。

3. 实际项目怎么搞? 实际项目,尤其是配置(数据库地址、API密钥、调试开关),我强烈建议用 .env 文件配合 python-dotenv 库。别把敏感配置硬编码在代码里。

  • 先安装:pip install python-dotenv
  • 在项目根目录创建 .env 文件:
    DEBUG=True
    SECRET_KEY=your-secret-key-here
    DATABASE_URL=postgresql://user:pass@localhost/dbname
    
  • 在Python代码里(通常是入口文件,如 app.pysettings.py)最开头加载:
    from dotenv import load_dotenv
    load_dotenv()  # 这会从 .env 文件加载所有变量到 os.environ
    
    import os
    debug_mode = os.environ.get('DEBUG') == 'True'
    secret_key = os.environ.get('SECRET_KEY')
    
    这样,开发、测试、生产环境就可以用不同的 .env 文件(生产环境通常通过真实系统环境变量设置,不提交 .env 文件)。

4. 命令行运行前设置: 你也可以在启动命令前直接设置,比如:

API_KEY=mykey python my_script.py

或者在Windows CMD里:

set API_KEY=mykey && python my_script.py

总结:开发用 python-dotenv 管理配置最省心。

是全局的,只有用 pycharm 右键运行打印不出来,可怕的是项目运行时有时能获取有时又不能!

碰到这个事情,之前是在那个下拉选配置的里面设置了就好了。

能仔细说下吗

系统环境变量在你创建 Run 任务的时候就固定到 Run 配置的环境中了

环境变量的环境是指

一个进程运行的环境。

File>>Settings>>Project:xxx>>Project Interpreter
在 Project Interpreter 找到你系统中 python 的位置,或者创建一个虚拟环境

我是这样的 每个项目确保环境独立 单独建个虚拟环境 路径配到 python (各种版本可能)配的 保持唯一

你可以在 configure 中 environment variables 中设置环境变量

回到顶部