为什么django包含很多'__init__.py'?

时间:2010-01-01 07:53:09

标签: python django module

django项目中的许多目录都包含__init__.py,我认为它将用作某些内容的初始化。这个__init__.py在哪里使用?

2 个答案:

答案 0 :(得分:11)

Python不会使sys.path中每个目录的每个子目录都必须是:只包含名为__init__.py的文件。考虑以下shell会话:

$ mkdir adir
$ echo 'print "hello world"' > adir/helo.py
$ python -c 'import adir.helo'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named adir.helo
$ touch adir/__init__.py
$ python -c 'import adir.helo'
hello world

请参阅?只有目录adir和模块helo.pyimport adir.helo的尝试失败。如果__init__.py中也存在adir那么 Python知道adir是一个包,因此导入成功。

答案 1 :(得分:7)

你的问题不明确。你到底在问什么?

文件__init__.py就在那里,因此您的文件夹可以定义为a package,可以执行以下操作:

from myapp.models import Something