Salterò la discussione sulla confezione Python (distutils, setuptools, pip, ecc.), Poiché sembra che preferireste usare semplici file zip o tarball. Mi rivolgo il "dolore punti" si parlano uno alla volta:
file dei modelli: Finché si dispone di 'django.template.loaders.app_directories.load_template_source' incluso nella cornice TEMPLATE_LOADERS dei vostri progetti, non dovresti preoccuparti di questo. Ciascuna delle tue app può avere una sottodirectory "templates /", ei modelli in essi verranno caricati proprio come se fossero nella directory dei modelli del tuo progetto.
File multimediali: i media delle app sono un problema. Per lo sviluppo, è possibile utilizzare una vista serve_media personalizzata che funziona in modo simile al caricatore di template app_directories (cerca i media in ogni app). In produzione, è necessario copiare i file, utilizzare collegamenti simbolici o utilizzare alias a livello di server Web. Ci sono diverse app di utilità là fuori che cercano di appianare questo problema; Ora utilizzo django-staticfiles.
Modifica impostazioni.py: non c'è modo semplice per aggirare questo. Per i suoi modelli, tag modello, comandi di gestione, ecc. Per funzionare, un'app deve essere elencata in INSTALLED_APPS. Quello che potresti fare è scrivere un codice personalizzato nel tuo settings.py che elenca i contenuti di una determinata directory e aggiunge dinamicamente i pacchetti che trova lì su INSTALLED_APPS. Un po 'pericoloso (pensa attentamente a chi ha i permessi per inserire i file in quella directory, perché hanno le chiavi del tuo regno), e i nuovi file verranno rilevati solo su un server di ricarica, ma dovrebbe funzionare.
Penso che se si mettono insieme queste soluzioni, è possibile raggiungere la situazione ideale: decomprimere per installare, eliminare per disinstallare.
fonte
2009-08-28 21:27:44
Grazie per il collegamento a djano-media-utils. Questo è il più grande dolore nel meccanismo. Vorrei poter specificare più dirs multimediali. Immagino che aggiungere dinamicamente a INSTALLED_APPS sia un'opzione. Dal momento che è necessario accedere al server per posizionare il plugin, la persona che installa ha comunque accesso a tutti i file. Hai provato prima? – Siddhi
No, non ho mai provato un'impostazione dinamica INSTALLED_APPS. Nel concetto non c'è niente di troppo complicato a riguardo. In pratica, un problema potrebbe essere la necessità di riavviare il server Web di produzione ogni volta che le app vengono aggiunte/rimosse dalla directory dei plug-in. Inoltre, se le app di plugin possono includere modelli, è necessario un piano per rendere possibile il syncdb necessario. –