【发布时间】:2013-11-11 12:46:00
【问题描述】:
我的设置文件定义如下(config/settings.py):
HOST='localhost'
PORT='9001'
当我在视图中导入设置并按如下方式打印每个设置的值时,它会正确打印(views/user.py):
from ..config import settings
print settings.HOST
print settings.PORT
但是当我从 def 内部使用或打印相同的值时,它会给出错误(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 *
【问题讨论】:
-
您需要向我们展示更多代码。一些other 代码将
settingsfunction 添加到该模块。导入模块时该函数还不存在(至少不在您打印settings.HOST的位置),但是当usersettings()被调用 时,settings已被重新绑定到函数对象. -
您的代码中可能还有另一个
settings函数,它解释了这种行为。 -
你能显示
user.py吗? -
请检查整个代码库是否使用字符串
settings,并检查是否没有def settings(...)行或settings = something else。 -
谢谢大家......你们都是正确的......通过一些我的user_settings函数的初始名称'user_'被删除导致这个问题......我应该先查看我的user.py发布查询...
标签: python flask runtime-error