如果一个名为'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.pymypythondir$python mycode.py
mypythondir$myname= damon
我很困惑,为什么值'damon'。它应该是'denny',因为没有设置MYPROJECT_PRODUCTION,并且os.environ中没有关键的'MYPROJECT_PRODUCTION'。
然后我设置
mypythondir$export MYPROJECT_PRODUCTION=False
我再次运行代码,即使现在结果也一样..但这次密钥MYPROJECT_PRODUCTION
位于os.environ
这里发生了什么?有人可以帮我解决这个问题吗?
答案 0 :(得分:3)
您的默认值为True
。任何非空值(包括字符串"False"
)都是真的。将默认值更改为false,或完全省略它。
答案 1 :(得分:1)
os.environ只是一个映射对象。你有没有尝试过os.getenv()?看到这个链接: http://docs.python.org/2/library/os.html#process-parameters