AttributeError:'function'对象没有属性'HOST'

时间:2013-11-11 12:46:01

标签: python flask runtime-error

我的设置文件定义如下(config / settings.py):

HOST='localhost'
PORT='9001'

当我在视图中导入设置并按如下方式打印每个设置的值时,它会正确打印(views / user.py):

from ..config import settings

print settings.HOST
print settings.PORT

但是当我从内部使用或打印相同的值时,它会给出错误(views / user.py):

from ..config import settings

print settings.HOST
print settings.PORT

@handle_error
def usersettings():
   print settings.HOST
   print settings.PORT

在上述文件中调用时,函数def会产生如下错误:

ERROR:root:'function' object has no attribute 'HOST'
Traceback (most recent call last):
  File "/home/rahul/mywebapp/webapp/views/utils.py", line 36, in decorated_view
    return_value = func(*args, **kwargs)
  File "/home/rahul/mywebapp/webapp/views/utils.py", line 27, in decorated_view
    return func(*args, **kwargs)
  File "/home/rahul/mywebapp/webapp/views/user.py", line 344, in usersettings
    print settings.HOST
AttributeError: 'function' object has no attribute 'HOST'
  

utils.py有装饰视图,名为handle_error

我的包结构如下:

mywebapp/
   run.py
   webapp/
      __init__.py
      views/
         __init__.py
         utils.py
         user.py
      config/
         __init__.py
         settings.py

仅供参考:这项工作一直持续到昨晚,突然间它开始表现出奇怪的上述错误。我在这做什么是错的?

编辑:

我的 init .py如下:

from .utils import *
from .user import *

1 个答案:

答案 0 :(得分:3)

import语句之后,可能会在settings之前声明或导入名为usersettings的函数。 Python现在将名称settings识别为该函数,而不是您导入的模块。

为确保不会发生这种情况,您可以在导入后直接放置所需的部件:

from ..config import settings

HOST = settings.HOST
PORT = settings.PORT

...

您可以在以后随时访问它:

def usersettings():
    print HOST, PORT

希望这有帮助!