# 1 新しいコマンドの統合

新しいコマンド実装を統合するにはいくつかの方法があります。一番難しいも のは新機能をdistutils本体に取り込み、それのサポートを提供するPythonの バージョンが出ることを待つ(そして使う)ことです。これは様々な理由で本当 に難しいことです。

もっとも一般的な、そしておそらくほとんどの場合にもっとも妥当な方法は、 新しい実装をあなたの setup.pyスクリプトに取り込み、 `distutils.core.setup()` 関数でそれらを使うようにすることです。

    from distutils.command.build_py import build_py as _build_py
    from distutils.core import setup

    class build_py(_build_py):
        """Specialized Python source builder."""

        # implement whatever needs to be different...

    setup(cmdclass={'build_py': build_py},
          ...)

このアプローチは新実装をある特定のパッケージで利用したい時、 そのパッケージに興味をもつ人全員がコマンドの新実装を必要とする時 にもっとも価値があります。

Python 2.4から、 インストールされたPythonを変更せずに、既存の setup.pyスクリプト をサポートするための3つめの選択肢が利用できるようになりました。 これは追加のパッケージングシステムのサポートを追加するサードパーティ拡 張を提供することを想定していますが、 これらのコマンドはdistutilsが利用されている何にでも利用可能です。 新しい設定オプション command_packages (コマンドラインオプショ ン --command-packages) は、コマンド実装モジュールを検索す る追加のパッケージを指定するために利用できます。 distutilsの全てのオプショ ンと同様に、このオプションもコマンドラインまたは設定ファイルで指定できます。 このオプションは設定ファイル中では`[global]`セクションか、コマン ドラインのコマンドより前でだけ設定できます。 設定ファイル中で指定する場合、コマンドラインで上書きすることができます。 空文字列を指定するとデフォルト値が使われます。これはパッケージと一緒に 提供する設定ファイルでは指定しないでください。

この新オプションによってコマンド実装を探すためのパッケージをいくつでも 追加することができます。複数のパッケージ名はコンマで区切って指定します。 指定がなければ、検索は`distutils.command`パッケージのみで行われ ます。ただし setup.pyがオプション --command-packages distcmds,buildcmdsで実行されている場合には、パッケージは `distutils.command`、 `distcmds`、そして `buildcmds` を、この順番で検索します。 新コマンドはコマンドと同じ名前のモジュールに、コマンドと同じ名前のクラ スで実装されていると想定しています。 上のコマドラインオプションの例では、コマンド `bdist_openpkg` は、`distcmds.bdist_openpkg.bdist_openpkg`か、 `buildcmds.bdist_openpkg.bdist_openpkg`で実装されるかもしれません。