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

最佳答案

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.py在其中,尝试import adir.helo失败如果__init__.py也存在于adir,那么Python就知道adir是一个包,因此导入成功了。

07-24 09:45