Python プロジェクトには MANIFEST.in が必要ですか? また、その中には何を含めるべきですか? 質問する

Python プロジェクトには MANIFEST.in が必要ですか? また、その中には何を含めるべきですか? 質問する

「Python 配布」ガイドdoc/txtファイルを含めるように指示され、ファイル.pyには除外されるファイルがありますMANIFEST.in

ソースディストドキュメントsdist はMANIFEST.in指定したファイルのみを使用し、ファイルを含めるように指示します。また、を生成するには.py: を使用するように指示しますが、Python ではこれが存在しないと表示されます。python setup.py sdist --manifest-onlyMANIFEST

これらは Python の異なるバージョンからのものであり、配布システムが完全に混乱していることは承知していますが、Python 3 とsetuptools(distribute を含むが現在は setuptools と呼ばれる新しいものであり、distribute ツール用に非推奨になった古い setuptools ではなく、distribute に復活し、distribute が setuptools に名前変更されたものです) を使用していると仮定します。

私は「標準」のフォルダ構造とsetup.pyファイルに従っています。

  1. が必要ですかMANIFEST.in?
  2. そこには何が入っているべきでしょうか?
  3. これらすべての異なるパッケージ システムと方法が 1 つのシンプルなプロセスに統合されるのはいつでしょうか?

ベストアンサー1

Re: 「MANIFEST.in は必要ですか?

いいえ、 を使用する必要はありませんMANIFEST.indistutilsと は両方とも、 - モジュール、パッケージ python ファイル、およびsetuptoolsに記載されているすべてのファイルをソース配布パッケージに含めます。 配布パッケージに含めるのがこれだけであれば、 を使用する必要はありません。setup.pyREADME.txttest/test*.pyMANIFEST.in

含めるデフォルトのファイルを操作 (追加または削除) する場合は、 を使用する必要がありますMANIFEST.in

Re: 中には何を入れたらいいですか?

手順は簡単です:

  1. プログラムの実行に重要と思われるすべてのファイル (モジュール、パッケージ、スクリプトなど) をsetup.py(引数を使用して)必ず含めてください。setup

  2. 追加するファイルや除外するファイルがあるかどうかを明確にします。どちらも必要ない場合は、 を使用する必要はありませんMANIFEST.in

  3. MANIFEST.in必要な場合は作成します。通常は、そこにtests*/*.pyファイルを追加しますが、README.rst使用しない場合はREADME.txtdocsファイルと、必要に応じてテスト スイート用のデータ ファイルを追加します。

例えば:

include README.rst
include COPYING.txt

テストするには、 を実行しpython setup.py sdist、 の下に作成された tarball を調べますdist/

これらすべての異なるパッケージ システムはいつになったら ...

今日の状況と 2 年前の状況を比較すると、状況ははるかに良くなっていますsetuptools。これが正しい方法です。この事実は無視できます。distutils少し壊れていて、低レベルの基盤であるため、これらのことをあなたから隠すsetuptoolsようsetuptoolsに注意します。

編集: 配布パッケージを構築するために私が最近使用したいくつかのプロジェクトpbrでは、3行setup.pyと残りが と にありますsetup.cfg。やその他の奇妙なものrequirements.txtを気にする必要はありませんMANIFEST.in。パッケージにはもう少しドキュメントが必要ですが。詳しくはこちら

おすすめ記事