导入无法在Google App Engine项目中使用

时间:2013-05-24 15:57:40

标签: python eclipse google-app-engine python-2.7

我正在python中使用GAE构建一个webapp。该项目最初是在没有GAE的情况下构建的,它工作得非常好,然后我将这些文件带入了GAE项目,突然间他们不再那么好玩了。一个文件land.py有4个表示不同土地类型的类,以及包含每个类的几个实例的列表。它们都基于陆地类,在land.py文件中。

class Land():
    def __init__(self):
        self.elevation = 0
        self.neighbors = []
        self.creatures = []
        self.location = (0, 0)
        self.was = None#to keep track of when flooded     
    def __str__(self):
        return("location " + str(self.location) + 
               " elevation " + str(self.elevation) + 
               " neighbors " + str(len(self.neighbors)) + 
               " creatures " + str(x.name for x in self.creatures) + " | ")
    def redefine(self, land):
        self.elevation = land.elevation
        self.neighbors = land.neighbors
        self.creatures = land.creatures
        self.location = land.location
        self.was = land

另一个类simulation.py导入land,应该可以使用它,但是当我尝试

self.map =  Land.landMass(the list of list's)    
for row in self.map: 
        print(row)

它会打印'[,,,,,,,][,,,,,,,][,,,,,,,][,,,,,,,]'它确实会看到那里有物体,因为当我这样做时

for i in self.map:
            for x in i:
                output += x.__str__()

它打印每个陆地物体的正确输出。这是一个问题,因为当我想检查时

for row in self.map:
    for column in row: 
        if isinstance(land, Land.Water):  #or type(land) 

它首先不知道土地是什么,但它也知道什么是Land.Water。如果你愿意,我可以提供代码,但很难确切地知道问题的确切位置。同样,在它自己的项目文件中它一切正常,但在GAE项目中却没有。谁知道为什么?

1 个答案:

答案 0 :(得分:0)

print(row)正在做一个repr(对象)而不是str(obj)如果你看一下页面的来源,你会看到像

这样的东西

至于你的其余代码,在不知道Land的定义的情况下很难分辨。 Land是db / ndb模型吗?

此问题的标题与您提出的问题实际上没有任何关系。我没有看到任何进口问题。

关于“它首先不知道什么是土地”的具体问题我假设你得到NameError name 'land' is not defined,如果不是,请详细说明错误。如果是正确的错误,您在哪里定义land

此行看起来错误if isinstance(land, Land.Water): or type(land)会给你一个SyntaxError