背景
简单来说是整个工程有一个启动文件,需要用一个const.py
文件中的参数来控制运行环境,这在Pycharm
这些IDE里面运行当然没问题,因为编译器的运行环境是一个虚拟的env
。我在Jenkins
的机器上运行时,无法通过单独的case.py
文件修改const.py
文件的值,使用global
变量也不行,故采用设置环境变量的方法。
实施
设置系统环境变量
os.environ['环境变量名称']='环境变量值' #其中key和value均为string类型
os.putenv('环境变量名称', '环境变量值')
获取系统环境变量
os.environ['环境变量名称']
os.getenv('环境变量名称')
踩坑
以上方法,推荐用os.environ
,因为使用os.putenv()
并不会真正改变os.environ
字典里面的环境变量,即某些平台无效(比如MacOS,我就是在这里一直设置不成功),但是使用os.environ
有一个潜在的隐患:在一些平台上,包括FreeBSD和Mac OS X,修改environ会导致内存泄露。详情见Python API。
我们设置的环境变量只存在于当前的python shell中(设置成功后用print os.environ['环境变量名称']或printos.getenv('环境变量名称')
查看)。也就是说,比如Windows环境下,在"我的电脑"——“属性”——“高级系统设置”——"高级"——"环境变量"中找不到刚才设置成功的环境变量。为什么会这样呢,如何用Python真正设置环境变量?
如果你所在的开发环境是windows的操作系统,import _winreg模块将环境变量写入注册表,再广播WM_SETTINGCHANGE消息,可参考实例;如果你所在的开发环境是Linux的操作系统,使用linux命令,在bash_profile文件中添加环境变量后,使其生效即可。