Pythonパッケージ(distutils、setuptools、pipなど)の説明は省略しますが、単純なzipファイルやtarballの使用を希望しているようです。
用テンプレートファイル:限り、あなたは「django.template.loaders.app_directories.load_template_source」は、プロジェクトのTEMPLATE_LOADERS設定に含まれているとして、私はあなたが一度に一つを言及した「痛みのポイントを」対処しますよこのことについて心配する必要はありません。それぞれのアプリは "templates /"サブディレクトリを持つことができ、そこのテンプレートはプロジェクト全体のテンプレートディレクトリにあるかのように読み込まれます。
メディアファイル:アプリケーションメディアは苦痛です。開発のために、app_directoriesテンプレートローダーと同様に動作するカスタムserve_mediaビューを使用することができます(各アプリケーションでメディアを検索します)。本番環境では、ファイルをコピーするか、シンボリックリンクを使用するか、Webサーバーレベルのエイリアスを使用する必要があります。この問題を円滑にしようとするいくつかのユーティリティアプリがあります。私は今django-staticfilesを使用します。
編集用の設定項目:これは簡単な方法ではありません。そのモデル、テンプレートタグ、管理コマンドなどが動作するためには、INSTALLED_APPSにアプリをリストアップする必要があります。あなたが行うことができることは、あるディレクトリの内容をリストし、INSTALLED_APPSにあるパッケージを動的に追加するカスタムコードをsettings.pyに書き込むことです。ちょっと危険です(あなたの王国への鍵を持っているため、誰がそのディレクトリにファイルを置く権限を持っているかを注意深く考えてください)。新しいファイルはサーバのリロードでしか検出されませんが、うまくいくはずです。
私はこれらのソリューションをまとめると、あなたの理想的な状況を達成することができると思います。インストールするには解凍し、アンインストールするには削除してください。
djano-media-utilsへのリンクありがとうございます。それはメカニズムの最大の痛みです。複数のメディアディレクトリを指定することもできれば幸いです。 INSTALLED_APPSに動的に追加するのはオプションだと思います。あなたはプラグインを配置するためにサーバーにアクセスする必要があるので、インストールする人は、とにかくすべてのファイルにアクセスできます。前にこれを試しましたか? – Siddhi
いいえ、私は動的なINSTALLED_APPS設定を試したことはありません。コンセプトではそれについてあまり複雑すぎるものはありません。実際には、プラグインディレクトリからアプリケーションが追加/削除されるたびにプロダクションWebサーバーを再起動する必要があります。また、プラグインアプリにモデルが含まれている場合は、必要なsyncdbを作成する計画が必要です。 –