這裏是我的原因,我認爲這將是錯誤的:
- 它是沒有什麼大的需要額外的代碼的複雜性,每一次添加一行來設置並不壞,特別是如果你正在做的一步#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雞蛋搭建起來非常棒。
來源
2011-09-06 19:08:37
Ski
(1)實際上它不僅僅是1行。這是在不同地方的幾行。我可以用同樣的方法來完成所有這些。1和3不會手動完成,它們也會自動完成。 (2)爲什麼不明確?該腳本會明確將其添加到INSTALLED_APPS。任何開發人員都可以通過查看settings.py來看到更新。 (3)不能。這是一個附加組件; settings.py可能會以我不想觸及的其他方式進行更改,因此版本控制它不起作用。出於同樣的原因,PIP將不起作用。我沒有可以插入鉤子的靜態settings.py文件.-- – mpen
- 因爲settings.py由第三方維護。 – mpen
@Mark,您可以擁有自己的設置文件,並且可以使用'from client_settings import *'加載第三方設置。然後,您可以動態修改INSTALLED_APPS屬性。 – Ski