4.4。 ソースディストリビューションの作成
セクション簡単な例に示すように、 sdist コマンドを使用してソースディストリビューションを作成します。 最も単純なケースでは、
python setup.py sdist
(セットアップスクリプトまたは構成ファイルで sdist オプションを指定していない場合)、 sdist は現在のプラットフォームのデフォルト形式のアーカイブを作成します。 デフォルトの形式は、Unixではgzipで圧縮されたtarファイル(.tar.gz
)、WindowsではZIPファイルです。
--formats
オプションを使用して、必要な数の形式を指定できます。次に例を示します。
python setup.py sdist --formats=gztar,zip
gzipで圧縮されたtarballとzipファイルを作成します。 使用可能な形式は次のとおりです。
フォーマット | 説明 | ノート |
---|---|---|
zip
|
zipファイル(.zip )
|
(1),(3) |
gztar
|
gzipで圧縮されたtarファイル(.tar.gz )
|
(2) |
bztar
|
bzip2で圧縮されたtarファイル(.tar.bz2 )
|
|
xztar
|
xzされたtarファイル(.tar.xz )
|
|
ztar
|
圧縮されたtarファイル(.tar.Z )
|
(4) |
tar
|
tarファイル(.tar )
|
バージョン3.5で変更: xztar
形式のサポートが追加されました。
ノート:
- Windowsのデフォルト
- Unixのデフォルト
- 外部 zip ユーティリティまたは zipfile モジュール(Python 1.6以降の標準Pythonライブラリの一部)のいずれかが必要です
- compress プログラムが必要です。 この形式は現在非推奨であり、Pythonの将来のバージョンで削除されることに注意してください。
tar
形式(gztar
、bztar
、xztar
、ztar
、またはtar
)を使用する場合、Unixではアーカイブの各メンバーに設定されるowner
およびgroup
の名前を指定できます。
たとえば、アーカイブのすべてのファイルをrootが所有するようにする場合は、次のようにします。
python setup.py sdist --owner=root --group=root
4.1。 配布するファイルの指定
ファイルの明示的なリスト(またはファイルの生成方法の説明)を指定しない場合、 sdist コマンドは、最小限のデフォルトセットをソースディストリビューションに配置します。
py_modules
およびpackages
オプションによって暗示されるすべてのPythonソースファイルext_modules
またはlibraries
オプションに記載されているすべてのCソースファイルscripts
オプションで識別されるスクリプトスクリプトのインストールを参照してください。- テストスクリプトのように見えるもの:
test/test*.py
(現在、Distutilsはソースディストリビューションに含める以外はテストスクリプトに対して何もしませんが、将来的にはPythonモジュールディストリビューションをテストするための標準があります) README.txt
(またはREADME
)、setup.py
(またはセットアップスクリプトと呼ばれるもの)、およびsetup.cfg
package_data
メタデータに一致するすべてのファイル。 パッケージデータのインストールを参照してください。data_files
メタデータに一致するすべてのファイル。 追加ファイルのインストールを参照してください。
これで十分な場合もありますが、通常は、配布する追加のファイルを指定する必要があります。 これを行う一般的な方法は、デフォルトでMANIFEST.in
と呼ばれるマニフェストテンプレートを作成することです。 マニフェストテンプレートは、マニフェストファイルMANIFEST
を生成する方法の単なるリストです。これは、ソースディストリビューションに含めるファイルの正確なリストです。 sdist コマンドは、このテンプレートを処理し、その命令とファイルシステムで検出された内容に基づいてマニフェストを生成します。
独自のマニフェストファイルをロールする場合、形式は単純です。1行に1つのファイル名、通常のファイル(またはそれらへのシンボリックリンク)のみです。 独自のMANIFEST
を提供する場合は、すべてを指定する必要があります。この場合、上記のデフォルトのファイルセットは適用されません。
バージョン3.1での変更:既存の生成されたMANIFEST
は、 sdist が変更時間をMANIFEST.in
または [のいずれかと比較せずに再生成されます。 X171X]。
バージョン3.1.3で変更: MANIFEST
ファイルは、生成されたことを示すコメントで始まります。 このコメントのないファイルは上書きまたは削除されません。
バージョン3.2.2で変更: sdist は、MANIFEST.in
が存在しない場合、以前のようにMANIFEST
ファイルを読み取ります。
マニフェストテンプレートには、1行に1つのコマンドがあり、各コマンドは、ソースディストリビューションに含めるまたはソースディストリビューションから除外するファイルのセットを指定します。 例として、ここでもDistutils独自のマニフェストテンプレートに目を向けます。
include *.txt
recursive-include examples *.txt *.py
prune examples/sample?/build
意味はかなり明確である必要があります。*.txt
に一致するディストリビューションルート内のすべてのファイル、*.txt
または*.py
に一致するexamples
ディレクトリの下のすべてのファイルを含めます。 examples/sample?/build
に一致するすべてのディレクトリを除外します。 これはすべて、標準インクルードセットの後に実行されるため、マニフェストテンプレートの明示的な指示を使用して、標準セットからファイルを除外できます。 (または、--no-defaults
オプションを使用して、標準セットを完全に無効にすることができます。)マニフェストテンプレートミニ言語で使用できるコマンドは他にもいくつかあります。 セクションソースディストリビューションの作成:sdistコマンドを参照してください。
マニフェストテンプレート内のコマンドの順序は重要です。最初は、上記のようにデフォルトファイルのリストがあり、テンプレート内の各コマンドはそのファイルのリストに追加またはリストから削除します。 マニフェストテンプレートを完全に処理したら、ソースディストリビューションに含めるべきではないファイルを削除します。
- Distutilsの「ビルド」ツリー内のすべてのファイル(デフォルトは
build/
) RCS
、CVS
、.svn
、.hg
、.git
、.bzr
、または_darcs
これで、ファイルの完全なリストができました。これは、将来の参照用にマニフェストに書き込まれ、ソース配布アーカイブの構築に使用されます。
--no-defaults
オプションを使用すると、含まれているファイルのデフォルトセットを無効にでき、--no-prune
を使用して標準の除外セットを無効にできます。
Distutils独自のマニフェストテンプレートに従って、 sdist コマンドがDistutilsソースディストリビューションに含めるファイルのリストをどのように作成するかを追跡しましょう。
- すべてのPythonソースファイルを
distutils
およびdistutils/command
サブディレクトリに含めます(これら2つのディレクトリに対応するパッケージがセットアップスクリプトのpackages
オプションで言及されているためです。セクションを参照してください)。セットアップスクリプトの作成) README.txt
、setup.py
、およびsetup.cfg
(標準ファイル)を含む- インクルード
test/test*.py
(標準ファイル) - 配布ルートに
*.txt
を含めます(これにより、README.txt
が再度検出されますが、このような冗長性は後で削除されます) examples
の下のサブツリーに*.txt
または*.py
に一致するものをすべて含めます。examples/sample?/build
に一致するディレクトリで始まるサブツリー内のすべてのファイルを除外します。これにより、前の2つの手順に含まれるファイルが除外される可能性があるため、マニフェストテンプレートのprune
コマンドが[ X223X] コマンドbuild
ツリー全体、およびRCS
、CVS
、.svn
、.hg
、.git
、[X98X ] および_darcs
ディレクトリ
セットアップスクリプトと同様に、マニフェストテンプレートのファイル名とディレクトリ名は常にスラッシュで区切る必要があります。 Distutilsは、それらをプラットフォーム上の標準表現に変換します。 このように、マニフェストテンプレートはオペレーティングシステム間で移植可能です。