跨不同文件的相同导入

时间:2013-04-14 12:03:30

标签: python google-app-engine

是否可以只在一个位置包含库/包?

class Sample( db.Model ):
  randomText = db.StringProperty( multiline = True )

-

from google.appengine.ext import db
from project.models import Sample
class SampleHandler( ):
  def get( self ):
    xamp = Sample.all( )

由于处理程序已经从google.appengine.ext库/包中导入db,然后导入模型,我假设您不必再在模型本身中包含它。但是,看起来我不得不这样做?

有人在乎解释吗?

1 个答案:

答案 0 :(得分:2)

您需要导入模块使用它们

如果您的models模块使用google.appengine.ext.db模块,则需要将其导入,而不是在处理程序模块中。

导入事物会在模块命名空间中创建对该“事物”的引用,以便在使用它时可以找到它的代码。 db是您使用google.appengine.ext中定义的对象的本地名称。

如果您的处理程序使用相同的对象,则需要仍然导入它。如果导致models 所有名称突然出现在您的处理程序模块中的models,那么您最终会遇到名称冲突和难以调试的错误这个地方。

反之亦然,如果仅在处理程序模块中而不是在google.appengine.ext.db模块中导入models,则需要将给定模块的所有依赖项与模块本身一起导入。这很快变得不可行,因为您需要记录models模块所需的所有内容才能使用它。