10
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

in above code following error is shown

if os.environ.has_key('SERVER_SOFTWARE') \
AttributeError: '_Environ' object has no attribute 'has_key'
joaquin
  • 82,968
  • 29
  • 138
  • 152
anbu jeremiah
  • 111
  • 1
  • 2
  • 6

1 Answers1

21

I supose you are working on python 3. In Python 2, dictionaries had a has_key() method. In Python 3, as the exception says, it no longer exists. You need to use the in operator:

if 'SERVER_SOFTWARE' in os.environ

here you have an example (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'
>>> 
joaquin
  • 82,968
  • 29
  • 138
  • 152
  • following error comes if i did as u told - if 'SERVER_SOFTWARE' in os.environ ^ SyntaxError: invalid syntax – anbu jeremiah Dec 08 '11 at 07:27
  • Two ideas: 1) You missed the ":" or the "\". 2) You are using a Python version before 2.2. – dmeister Dec 08 '11 at 07:37
  • 1
    os.environ actually has and attribute called has_key . try dir(os.environ) – avasal Dec 08 '11 at 07:45
  • @user1074886 please, confirm which python version you are using. Edit your question and add the code with the modifications and the new syntax error. – joaquin Dec 08 '11 at 09:02