Pythonアプリケーションをパッケージ化して、pipでインストールできるようにするにはどうすればよいですか?


95

私は仕事で走っているフットボールチップコンテストのための暇なときにdjangoアプリケーションを書いています。私はこの時間を賢く使って、virtualenv、pip、パッケージング、django 1.3、そして簡単に再配布可能なアプリケーションを作成する方法について理解しました。ここまでは順調ですね。

梱包部分は私次第です。たとえば、GitHubのdjangoアプリの多くは、ほとんど同じ方法で(ほぼ)バンドルされています。例として、django-uni-formsを使用します。

私が想定しているのは、MANIFEST.insetup.pyが、pipがその仕事をするために必要な唯一の必須要素であるということです。あれは正しいですか?私の仮定が間違っている場合、他にどのようなコンポーネントが必要ですか?

必要なパッケージファイルは一般に生成されますか、それとも手動で作成されますか?依存関係を記述してからインストールすることもできますか?私のアプリケーションはに依存しdjango-uni-formsておりrequirements.txt、依存関係のインストールに使用したアプリ内のファイルにリストされています。しかし、それはパッケージングシステムが処理できるものですか?

アプリケーションをパッケージ化して、pipがアプリケーションと依存関係をインストールできるようにするために実行する必要がある手順は何ですか?

回答:


88

はい、MANIFEST.inかつsetup.py十分なものでなければなりません。

このブログ投稿には、このトピックに関する優れた情報が含まれています 。Django再利用可能アプリのパッケージ化

そして、ここに私を大いに助けてくれたもう一つの良い、詳細な概要があります: Python Packaging User Guide

特に静的ファイル(テンプレート)を含めるためのヒントは、最初は明らかではない場合があるため、重要です。

はい、必要なパッケージを指定setup.pyして、アプリのインストール時に自動的に取得することができます。

例えば:

    install_requires = [
        'django-profiles',
        'django-uni-forms',
    ],

明らかに、依存関係が定義されている場所が2つありますが、必ずしもこれらの情報が重複していることを意味しているわけではありません。setup.pyとrequirements.txtです。

この設定により、パッケージはを介してインストール可能になりますpip


ピエールがコメントで述べたように、Djangoの公式ドキュメントには関連セクションもあります:アプリのパッケージ化

そして、この「完全に不完全な」ガイドがあります。これは、パッケージのパッケージ化とPyPIへのアップロードに関する優れた概要を実際に提供します。愛の労働を共有する:PyPI Quick And Dirty


4
また、公式ドキュメントにDjangoアプリをパッケージ化する方法を説明する部分もあります
Pierre de LESPINAY
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.