0

如果名为“MYPROJECT_PRODUCTION”的环境变量设置为 True,我需要为变量分配不同的值。因此,我创建了以下代码,其中创建了一个 module1 文件来存储生产值

主要代码位于mycode.py中。这里是目录结构

mypythondir/
           mycode.py
           module1.py

我的代码.py

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

模块1.py

MYNAME='damon'

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

mypythondir$echo $MYPROJECT_PRODUCTION

空输出..所以,还没有设置变量。在不设置环境变量的情况下,从 mypythondir 运行 mycode.py

mypythondir$python mycode.py

mypythondir$myname= damon

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

然后我设置

mypythondir$export MYPROJECT_PRODUCTION=False

我再次运行代码,即使现在结果是一样的..但这次关键MYPROJECT_PRODUCTIONos.environ

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

4

2 回答 2

3

您的默认值为True. 并且任何非空值,包括 string "False",都是 true。将默认值更改为 false,或完全省略它。

于 2013-01-22T07:16:33.750 回答
1

os.environ 只是一个映射对象。您是否尝试过简单的 os.getenv()?请参阅此链接: http ://docs.python.org/2/library/os.html#process-parameters

于 2013-01-22T07:20:33.760 回答