【问题标题】:how to solve AttributeError: '_Environ' object has no attribute 'has_key'如何解决 AttributeError: '_Environ' 对象没有属性 'has_key'
【发布时间】:2011-12-08 07:00:18
【问题描述】:
def _is_dev_mode():
    # quick hack to check if the program is running in dev mode.
    # if 'has_key' in os.environ  
    if os.environ.has_key('SERVER_SOFTWARE') \
        or os.environ.has_key('PHP_FCGI_CHILDREN') \
        or 'fcgi' in sys.argv or 'fastcgi' in sys.argv \
        or 'mod_wsgi' in sys.argv:
           return False
    return True

在上面的代码中显示以下错误

if os.environ.has_key('SERVER_SOFTWARE') \
AttributeError: '_Environ' object has no attribute 'has_key'

【问题讨论】:

    标签: python eclipse web-services


    【解决方案1】:

    我假设您正在使用 python 3。在 Python 2 中,字典有一个 has_key() 方法。在 Python 3 中,正如例外所说,它不再存在。您需要使用in 运算符:

    if 'SERVER_SOFTWARE' in os.environ
    

    这里有一个例子(py3k):

    >>> import os
    >>> if 'PROCESSOR_LEVEL' in os.environ: print(os.environ['PROCESSOR_LEVEL'])
    
    6
    >>> if os.environ.has_key('PROCESSOR_LEVEL'): print("fail")
    
    Traceback (most recent call last):
      File "<pyshell#18>", line 1, in <module>
        if os.environ.has_key('PROCESSOR_LEVEL'): print("fail")
    AttributeError: '_Environ' object has no attribute 'has_key'
    >>> 
    

    【讨论】:

    • 如果我按照你说的做,会出现以下错误 - 如果 os.environ 中的 'SERVER_SOFTWARE' ^ SyntaxError: invalid syntax
    • 两个想法:1)你错过了“:”或“\”。 2)您使用的是2.2之前的Python版本。
    • os.environ 实际上有一个名为 has_key 的属性。试试 dir(os.environ)
    • @user1074886 请确认您使用的是哪个 python 版本。编辑您的问题并添加带有修改和新语法错误的代码。
    猜你喜欢
    • 1970-01-01
    • 2020-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-23
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多