在绝大多数情况下,如果需要在程序运行过程中设置环境变量,使用os.environ.setdefault函数是没有任何问题的,但是有两种场景下setdefault会造成意外的问题,需要慎用:

如果程序执行前,系统里已经存在了某环境变量(如ENV=VAL1),此时如果在程序中用setdefault函数对该环境变量设置另一个不同的值(如VAL2),会因为setdefault函数的特性导致无法设置为新值
也是因为上述这一点,如果进程A先设置了环境变量(如ENV=VAL1),而A启动了子进程B,子进程B会继承A进程的所有与环境变量,会导致B运行的时候,程序运行环境里已经存在环境变量ENV,导致如果此时用setdefault函数对该环境变量设置另一个不同的值(如VAL2),也会因为同样的原因导致无法设置为新值
因此,在程序运行中设置系统环境变量的最安全方法还是:

os.environ['ENV'] = 'VAL'

python 获取系统环境变量 os.environ and os.putenv
从一段code说起 “if "BATCH_CONFIG_INI" in os.environ:” 判断环境变量的值有没有定义

如果定义的话就去环境变量的值,否则就取当前目录下的config.ini文件。

复制代码
         if "BATCH_CONFIG_INI" in os.environ:
             print "Using custom ini file!"
             self.inifile = os.environ["BATCH_CONFIG_INI"]
         else:
             self.inifile = self.cur_file_dir() + "/config.ini"
         self.db_print ("inifile = (%s)" %(self.inifile))
复制代码

用Python Shell设置或获取环境变量的方法:

一、设置系统环境变量

、os.environ['环境变量名称']='环境变量值' #其中key和value均为string类型

、os.putenv('环境变量名称', '环境变量值')

二、获取系统环境变量

、os.environ['环境变量名称']

、os.getenv('环境变量名称')

django os.environ慎用setdefault操作环境变量!的更多相关文章

  1. C# 获取当前文件、文件夹的路径及操作环境变量

    一.获取当前文件的路径 1.   System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName      获取模块的完整路径,包 ...

  2. 理解及操作环境变量(基于Mac操作)

    通过本文,简单的了解下环境变量及其操作,与便于遇到相关问题时能够准确快捷的解决. 什么是环境变量 An environment variable is a dynamic-named value th ...

  3. mac OS X下配置jdk环境变量

    进入命令行,开始如下操作: cd  ~touch.bash_profile vi  .bash_profile 输入内容jdk变量配置内容: export JAVA_HOME=/Library/Jav ...

  4. history and its relevant variables in Linux/GNU and Mac OS history命令以及相关环境变量

    对于Terminalor们,history命令并不陌生,什么!n, !!更是很常用的,而且您在命令行敲的cmds是默认保存在/home/$USER/.bash_history(linux) /User ...

  5. 安装 tensorflow 1.1.0;以及安装其他相似版本tensorflow遇到的问题;tensorflow 1.13.2 cuda-10环境变量配置问题;Tensorflow 指定训练时如何指定使用的GPU;

    # 安装 2.7 环境conda create -n python2. python= conda activate python2. # 安装 1.1.0 gpu版本pip # 配置环境变量expo ...

  6. 【9】python关于os模块与os.path的相关操作

    ---恢复内容开始--- #__author:"吉*佳" #date: 2018/10/20 0020 #function: # os模块知识点 import os # 获取平台名 ...

  7. python设置环境变量(临时和永久)

    设置临时环境变量 import os # 设置环境变量 os.environ['WORKON_HOME']="value" # 获取环境变量方法1 os.environ.get(' ...

  8. Go 环境变量相关操作

    Go语言中os包提供了一些环境变量的操作封装.包括: 设置环境变量:Setenv 获取环境变量:Getenv 删除指定的环境变量:Unsetenv 获取所有环境变量:Environ 清除所有环境变量: ...

  9. 关于Djanggo的环境变量

    templates是Django指定的T目录,pycharm下templates的图标会变亮,static则可以改动.下面STATIC_URL可以指定,STATICFILES_DIRS则指定了temp ...

随机推荐

  1. MVC之Model元数据

    Contronoller激活之后,ASP.NET MVC会根据当前请求上下文得到目标Action的名称,然后解析出对应的方法并执行之. 在整个Action方法的执行过程中,Model元数据的解析是一个 ...

  2. Django添加ckeditor富文本编辑器

    源码 https://github.com/django-ckeditor/django-ckeditor 通过pip安装. pip3 install django-ckeditor pip3 ins ...

  3. iptables学习

    droidwall.sh #!/system/bin/sh IPTABLES=iptables BUSYBOX=busybox GREP=grep ECHO=echo # Try to find bu ...

  4. Uni2D 入门 -- Atlas转载 http://blog.csdn.net/kakashi8841/article/details/17588095

    转载csdnTexture Atlas 我为什么应该使用Texture Atlas? 使用Atlas是一个普遍的好做法,而且它有很多好处.当有某些需要在屏幕渲染的时候,它背后带来的是draw call ...

  5. css3选择器补充

    一.关系选择器 1.E+F   (E元素下一个满足条件的兄弟元素节点) <style> div + p{ background-color:red;// 第一个p元素变色 } </s ...

  6. vue 学习笔记1

    1.子组件在父组件的原生的事件例如一个child子组件的点击事件<child @click="handleClick">点击</child>这种情况在父组件 ...

  7. 微擎框架下拉分页(使用js模板引擎)

    1.需要分页的页面,引入一下文件 <script language="javascript" src="\addons\{$_GPC['m']}\template\ ...

  8. unittest测试

    标签(空格分隔): unittest unittest介绍: python里面也有单元测试框架-unittest,相当于是一个python版的junit. 一.unittest简介 1.先导入unit ...

  9. 用PLSQL Developer 查看Oracle的存储过程

    1 2.输入 3.具体存储过程

  10. .mht文件转换为html

    用360浏览器打开文件后,Ctrl + s  保存即可