Distutils の使い方は、モジュール開発者とサードパーティ製のモジュールを インストールするユーザ/管理者のどちらにとってもきわめて単純です。 開発者側のやるべきことは (もちろん、しっかりした実装で、詳しく 文書化され、よくテストされたコードを書くことは別として!) 以下の 項目になります:
全てのモジュール開発者が複数の実行プラットフォームを利用できるわけでは ないので、全てのプラットフォーム向けにビルド済みの配布物を提供して もらえると期待するわけにはいきません。ですから、仲介を行う人々、 いわゆる パッケージ作成者 (packager) がこの問題を解決すべく 立ち上がってくれることが望ましいでしょう。パッケージ作成者は モジュール開発者がリリースしたソースコード配布物を、一つまたはそれ以上 のプラットフォーム上でビルドして、得られたビルド済み配布物をリリース することになります。したがって、ほとんどの一般的なプラットフォームに おけるユーザは、setup スクリプト一つ実行せず、コードを一行たりとも コンパイルしなくても、使っているプラットフォーム向けのきわめて普通の 方法でほとんどの一般的な Python モジュール配布物をインストールできる でしょう。
foo.py という名前のファイルに収められている foo という 名前のモジュールを配布したいだけなら、setup スクリプトは以下のような 単純なものになります:
from distutils.core import setup setup(name="foo", version="1.0", py_modules=["foo"])
以下のことに注意してください:
このモジュールのソースコード配布物を作成するには、 上記のコードが入った setup スクリプト setup.py を作成して、以下のコマンド:
python setup.py sdist
この操作を行うと、アーカイブファイル (例えば Unixでは tarball、Windows では ZIP ファイル) を作成します。アーカイブファイル には、setup スクリプト setup.py と、配布したいモジュール foo.py が入っています。アーカイブファイルの名前は foo-1.0.targ.gz (または .zip) になり、展開すると ディレクトリ foo-1.0 を作成します。
エンドユーザが foo モジュールをインストールしたければ、 foo-1.0.tar.gz (または .zip) をダウンロードし、 パッケージを展開して、以下のスクリプトを -- foo-1.0 ディレクトリ中で -- 実行します:
python setup.py install
この操作を行うと、インストールされている Python での適切な サードパーティ製モジュール置き場にfoo.py を完璧に コピーします.
ここで述べた簡単な例では、 Distutils の基本的な概念のいくつかを
示しています。まず、開発者とインストール作業者は同じ基本
インタフェース、すなわち setup スクリプトを使っています。
二人の作業の違いは、使っている Distutils コマンド (command)
にあります: sdist
コマンドは、ほぼ完全に開発者だけが
対象となる一方、install
はどちらかというとインストール
作業者向けです (とはいえ、ほとんどの開発者は自分のコードをインストール
したくなることがあるでしょう)。
ユーザにとって本当に簡単なものにしたいのなら、一つまたはそれ以上の
ビルド済み配布物を作ってあげられます。例えば、Windows マシン
上で作業をしていて、他の Windows ユーザにとって簡単な配布物を提供したいのな
ら、実行可能な形式の (このプラットフォーム向けのビルド済み配布物としては
もっとも適切な) インストーラを作成できます。これには
bdist_wininst
を使います。例えば:
python setup.py bdist_wininst
その他の有用な配布形態としては、bdist_rpm
に実装
されている RPM 形式、 Solaris pkgtool
(bdist_pkgtool
) 、 HP-UX swinstall
(bdist_sdux
) があります。例えば、以下のコマンドを実行すると、
foo-1.0.noarch.rpm という名前の RPM ファイルを作成します:
python setup.py bdist_rpm
(bdist_rpm
コマンドは rpm
コマンドを使うため、
Red Hat Linux や SuSE Linux、 Mandrake Linux といった RPM ベースの
システムで実行しなければなりません)
どの配布形式が利用できるかは、
python setup.py bdist --help-formats
このドキュメントを読んでいるのなら、モジュール (module)、 拡張モジュール (extension) などが何を表すのかをよく知っているかも しれません。とはいえ、読者がみな共通のスタートポイントに 立って Distutils の操作を始められるように、ここで一般的な Python 用語 について以下のような用語集を示しておきます:
sys.path
に列挙されている
ディレクトリ全てが、ルートパッケージに配置されるモジュールの内容に
影響します。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。