.. _python_os.environ_os.getenv:
===================================================
Python ``os.environ`` 对象 和 ``os.getenv()`` 方法
===================================================
``os.environ``
=================
在 Python 中 ``os.environ`` 是一个用户环境变量的映射对象(mapping object)。它返回的是一个 :ref:`python_dictionary` ,其中用户的环境变量作为键(key),其值作为值(value)。由于 ``os.environ`` 是一个Python字典,所以可以执行字典的 ``get`` 和 ``set``
注意,虽然可以修改 ``os.environ`` ,但是 **任何 os.environ 修改只在当前进程有效,而不会持久化生效**
- 获取环境变量的代码片段案例:
.. literalinclude:: python_os.environ_os.getenv/environ_home.py
:language: python
:caption: 打印输出操作系统 **所有** 环境变量
环境变量获取空 ``null`` 问题
===============================
我在实践 :ref:`pyodps_startup` 遇到一个小白问题,运行 ``odps`` 测试程序报,调试发现并没有获得指定环境变量,原因就是在使用 ``os.environ`` 或者 ``os.getenv()`` ,一定要明确配置 ``export`` 指定环境变量,否则即使登陆 :ref:`bash` 看上去环境变量生效,实际 Python程序运行还是拿不到环境变量:
.. literalinclude:: ../../big_data/maxcompute/pyodps/pyodps_startup/odps_env
:caption: ODPS相关环境变量设置
:emphasize-lines: 5
原因说来很简单,一定要确保 ``~/.bash_profile`` 中输出的环境变量使用了 ``export`` 指令明确输出,否则 ``os.environ`` 对象 或者 ``os.getenv()`` 方法返回的就是空值
参考
=====
- `Python | os.environ object `_
- `Python | os.getenv() method `_
- `Python os.environ throws key error? `_