Django暇なときに、仕事中の貧弱な競争のためにアプリケーションを書いています。この時間を賢く使用して、virtualenvの速度を上げることにしました。 、pip、packageing、Django 1.3、および簡単に再配布可能なアプリケーションを作成する方法。これまでのところ、とても良い。
私は包装の部分までです。たとえば、GitHubの多くのDjangoアプリはほとんど(ほぼ)同じ方法でバンドルされています。例として Django-uni-forms を使用します。
私がしている仮定は、MANIFEST.in
およびsetup.py
は、pipがその仕事をするのに必要な唯一のピースです。あれは正しいですか?私の仮定が間違っている場合、他にどのようなコンポーネントが必要ですか?
必要なパッケージファイルは通常生成されますか、それとも手作業で作成されますか?依存関係を記述してからインストールすることもできますか?私のアプリケーションはDjango-uni-forms
、およびrequirements.txt
依存関係のインストールに使用したアプリ内のファイル。しかし、それは包装システムが面倒を見ることができるものですか?
Pipがアプリケーションと依存関係をインストールできるようにアプリケーションをパッケージ化するために従う必要がある手順は何ですか?
はい、MANIFEST.in
とsetup.py
で十分です。
このブログ投稿には、このトピックに関するいくつかの良い情報があります: Packaging a Django reusable app
そして、ここに私を大いに助けたもう一つの良い、詳細な概要があります: Python Packaging User Guide
特に、静的ファイル(テンプレート)を含めるためのヒントは、最初は明らかではない可能性があるため重要です。
はい、アプリのインストール時に自動的に取得される必要なパッケージをsetup.py
で指定できます。
例えば:
install_requires = [
'Django-profiles',
'Django-uni-forms',
],
現在、依存関係が定義されている2つの場所がありますが、必ずしもこれらの情報が重複しているわけではありません: setup.py vs requirements.txt
このセットアップでは、 pip
を介してパッケージをインストールできる必要があります。
Pierreがコメントで述べたように、Djangoの公式ドキュメントには関連するセクションがあります: Packaging your app
そして、この「完全に不完全な」ガイドがあります。これは、パッケージ化とパッケージのPyPIへのアップロードに関する素晴らしい概要を提供します: Sharing Your Labor of Love:PyPI Quick And Dirty