简体   繁体   English

python代码中的env变量和逻辑

[英]env variables and logic in python code

I need to assign a different value to a variable if an env variable called 'MYPROJECT_PRODUCTION' is set to True.So ,I created the following code in which I created a module1 file for storing the production values 如果将名为“ MYPROJECT_PRODUCTION”的环境变量设置为True,则需要为变量分配一个不同的值。因此,我创建了以下代码,在其中创建了用于存储生产值的module1文件

The main code resides in mycode.py.Here is the directory structure 主要代码位于mycode.py。这是目录结构

mypythondir/
           mycode.py
           module1.py

mycode.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 module1.py

MYNAME='damon'

I opened a terminal (in ubuntu) Just to check I ran 我打开了一个终端(在ubuntu中)只是为了检查我是否已运行

mypythondir$echo $MYPROJECT_PRODUCTION

Empty output..So,no variable set yet. 空输出..因此,尚未设置变量。 Without setting the env variable ,ran mycode.py from mypythondir 不设置env变量,从mypythondir运行mycode.py

mypythondir$python mycode.py

mypythondir$myname= damon

I am confused,why is the value 'damon'.It should be 'denny' since there is no MYPROJECT_PRODUCTION set ,and there is no key 'MYPROJECT_PRODUCTION' in os.environ. 我很困惑,为什么值“ damon”。应该为“ denny”,因为没有设置MYPROJECT_PRODUCTION,并且在os.environ中没有键“ MYPROJECT_PRODUCTION”。

Then I set 然后我设定

mypythondir$export MYPROJECT_PRODUCTION=False

Again I ran the code and even now the result is the same..but this time the key MYPROJECT_PRODUCTION is in os.environ 再次,我运行了代码,即使现在结果还是一样。.但这一次,密钥MYPROJECT_PRODUCTIONos.environ

What is happening here ? 这是怎么回事? Can someone please help me figure this out? 有人可以帮我解决这个问题吗?

Your default value is True . 您的默认值为True And any non-empty value, including the string "False" , is true. 并且任何非空值(包括字符串"False" )都是true。 Change the default value to something false, or omit it entirely. 将默认值更改为false,或完全省略它。

os.environ is just a mapping object. os.environ只是一个映射对象。 Did you try simply os.getenv()? 您是否尝试过简单地使用os.getenv()? See this link: http://docs.python.org/2/library/os.html#process-parameters 看到此链接: http : //docs.python.org/2/library/os.html#process-parameters

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM