我的GAE应用程序在我的电脑上运行得很好,但当我上传它时,我开始得到一个AttributeError,特别是:
AttributeError: 'dict' object has no attribute 'item'我使用的是pylast接口(last.fm--link的一个API )。具体地说,我访问的是这种类型的变量列表:
SimilarItem = _namedtuple("SimilarItem", ["item", "match"])我有一个这种类型的变量,名为sim,当我得到属性错误时,我正在尝试访问sim.item。
我应该注意到,我在我的计算机上使用的是Python2.6,并且我知道GAE运行在Python2.5上。这会有什么不同吗?我认为它们是向后兼容的。
最后,我认为这可能是pylast导入的模块的问题--也许它们不能与GAE或其他什么一起工作?我做了一些研究,但没有得到任何结果。以下是导入:
import hashlib
import httplib
import urllib
import threading
from xml.dom import minidom
import xml.dom
import time
import shelve
import tempfile
import sys
import htmlentitydefs在这个令人沮丧的问题上,如果有任何帮助,我将不胜感激。提前谢谢。
发布于 2010-03-22 22:58:14
Python2.5没有namedtuple。它是在2.6中添加的。
Python:看起来_namedtuple函数是由pylast提供的,它将在Python2.5或更早的版本中使用真正的namedtuple,但在Python2.5或更早的版本中将后退到普通的老式dict。这意味着在生产环境中运行时必须使用sim['item']或sim.get('item')。
下面是该函数的源代码:
def _namedtuple(name, children):
"""
collections.namedtuple is available in (python >= 2.6)
"""
v = sys.version_info
if v[1] >= 6 and v[0] < 3:
return collections.namedtuple(name, children)
else:
def fancydict(*args):
d = {}
i = 0
for child in children:
d[child.strip()] = args[i]
i += 1
return d
return fancydicthttps://stackoverflow.com/questions/2493072
复制相似问题