以下是我认为这是错误的原因:
>这是额外的代码复杂性,没有任何大的需求,每次在设置中添加一行并不是那么糟糕,特别是如果你正在做第1步和第3步.
>您的项目正在使用哪些应用程序将不明确.当另一个开发人员处理您的项目时,他可能不知道您的应用已安装.
>您应该在代码版本控制系统上执行步骤#1和步骤#2,测试整个系统,然后提交更改,然后进行部署.
如果您正在寻找这样的“优化”,我认为您的开发/部署过程中存在错误(从我的角度来看).我认为使用INSTALLED_APPS更容易也更好.
如果你正在构建一些供公众使用的东西,并且你希望尽可能简单地添加模块,那么它会很好.在这种情况下,我建议将项目及其应用程序打包为python egg并使用入口点.然后您可以将应用程序部署到项目中,如下所示:
pip install my-app-name
甚至没有第1步和第3步!步骤#1将由pip完成,步骤#2和#3将由项目中定义的安装钩子完成.
Paste script是入口点利用的一个很好的例子:
# Install paste script:
pip install pastescript
# install django templates for pastescript:
pip install fez.djangoskel
# now paste script knows about fez.djangoskel because of entry-points
# start a new django project from fez's templates:
paste create -t django_buildout
这是来自fez.djangoskel包的setup.py的一部分:
...
entry_points="""
[paste.paster_create_template]
django_buildout=fez.djangoskel.pastertemplates:DjangoBuildoutTemplate
django_app=fez.djangoskel.pastertemplates:DjangoAppTemplate
...
zc.buildout是另一个伟大的工具,可以使您的部署更容易. Python egg对buildout非常有用.