env变量和python代码中的逻辑

时间:2013-01-22 07:12:38

标签: python environment-variables

如果一个名为'MYPROJECT_PRODUCTION'的env变量设置为True,我需要为变量赋一个不同的值。所以,我创建了以下代码,我在其中创建了一个用于存储生产值的module1文件

主要代码位于mycode.py.Here是目录结构

mypythondir/
           mycode.py
           module1.py

mycode.py

import os
if __name__=='__main__':
    MYNAME='denny'
    if os.environ.get('MYPROJECT_PRODUCTION',True):
        from module1 import *
    print 'myname=',MYNAME

module1.py

MYNAME='damon'

我打开了一个终端(在ubuntu中) 只是为了检查我跑了

mypythondir$echo $MYPROJECT_PRODUCTION

空输出..因此,尚未设置变量。 如果没有设置env变量,请从mypythondir

运行mycode.py
mypythondir$python mycode.py

mypythondir$myname= damon

我很困惑,为什么值'damon'。它应该是'denny',因为没有设置MYPROJECT_PRODUCTION,并且os.environ中没有关键的'MYPROJECT_PRODUCTION'。

然后我设置

mypythondir$export MYPROJECT_PRODUCTION=False

我再次运行代码,即使现在结果也一样..但这次密钥MYPROJECT_PRODUCTION位于os.environ

这里发生了什么?有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

您的默认值为True。任何非空值(包括字符串"False")都是真的。将默认值更改为false,或完全省略它。

答案 1 :(得分:1)

os.environ只是一个映射对象。你有没有尝试过os.getenv()?看到这个链接: http://docs.python.org/2/library/os.html#process-parameters