为什么django会投射python包?

时间:2010-01-05 01:17:18

标签: python django

为什么他们不是简单的目录?任何好的建议都表示要尽可能多地保留应用程序,而不是将它们与项目联系起来。作为project.application导入应用程序的能力不鼓励这样做。为什么django-admin.py会创建__init__.py?没有它,该项目非常有用。理由是什么?

4 个答案:

答案 0 :(得分:2)

我们有一个项目,我们为其他项目“分类”了各种项目。所以我们有其他项目从主项目中导入东西。我想对我们来说它提供了包含所有其他应用程序的通用命名空间。

我们可以转移到一个包中,我的所有应用程序都与我猜想的项目分开。我们的系统已经发展而不是有计划。

所以我想我的答案是,它提供了一个很好的根命名空间。 (根据我们的需要):)

答案 1 :(得分:1)

据我所知,没有要求应用程序位于项目命名空间内。只是他们在$ PYTHONPATH。因此,它们可以被共享相同PYTHONPATH的系统上的任何其他代码使用。

答案 2 :(得分:1)

项目的核心是settings.py和root urls.py.这两个都是Python模块,因此它们需要以某种方式可导入。您可以将项目目录直接放在Python路径上,从而使它们可以作为顶级模块导入,但这可能是更糟糕的做法。最好将项目作为一个包,设置和URL是其中的模块。

答案 3 :(得分:0)

我认为您可以重用应用程序,但不需要将它们从最初创建它们的项目中移除。如果项目不是包,则需要将要重用的应用程序复制/移动到python包中。因为项目本身就是一个合适的python包,你可以重用它中的应用程序,而无需将应用程序移动到其他地方。