我正在开发一个Python App Engine应用程序,我希望将源代码文件Models.py
的内容拆分为每个模型的单独文件,但我想将它全部放在名为Models的文件夹中。问题是,当我这样做时,我的应用程序无法再找到这些类。我该怎么办?
这个问题不是关于MVC but another question with the same title is。
答案 0 :(得分:12)
将一个空的__init__.py
文件放在Models目录中。
然后,在你的应用中;大概是一级,你可以在Models目录中引用模块,如下所示:
import Models
并像这样做一些事情:
Models.my_model.MyClassName
您还可以使用from
关键字,如下所示:
from Models import my_model
并像这样引用:
my_model.MyClassName
如果您只需要模块中的一种方法,您也可以这样做:
from Models.my_model import my_method_name
my_method_name()
documentation的强制性链接。
答案 1 :(得分:4)
回应你对Adam回答的评论,关于10个类的10个导入,首先不要忘记在Python中每个模块不需要一个类。模块应按功能组织,因此如果有意义,您可以将相关类分组到一个文件中。
如果您仍想一次性导入所有类,可以使用__init__.py
语法将它们全部导入from submodule import Class
文件中,然后只导入包含模块 - {{1并引用import mainmodule
等,甚至使用mainmodule.Class1
将类直接导入到命名空间中并直接引用它们。
答案 2 :(得分:1)
Adam Bernier提供了关于包如何工作的良好技术描述。 http://jcalderone.livejournal.com/39794.html
中描述了如何安排和发布项目的详细说明