Python の distutils または setuptools の setup() 関数を少し型にはまらない方法で呼び出したいのですが、distutils がこの種の使用法を意図しているかどうかはわかりません。
例として、現在、次のような 'setup.py' ファイルがあるとします (distutils ドキュメントから逐語的に引用 - setuptools の使用法はほとんど同じです)。
from distutils.core import setup
setup(name='Distutils',
version='1.0',
description='Python Distribution Utilities',
author='Greg Ward',
author_email='gward@python.net',
url='http://www.python.org/sigs/distutils-sig/',
packages=['distutils', 'distutils.command'],
)
通常、このモジュールの RPM の .spec ファイルだけをビルドするにpython setup.py bdist_rpm --spec-onlyは、コマンド ラインを解析し、「bdist_rpm」コードを呼び出して RPM 固有のものを処理する を実行します。.spec ファイルは './dist' で終わります。
コマンドライン パラメータを解析せずに、'--spec-only' オプションを指定して 'bdist_rpm' コマンドを実行するように setup() 呼び出しを変更するにはどうすればよいですか? コマンド名とオプションをパラメーターとして setup() に渡すことはできますか? または、手動でコマンド ラインを作成し、それをパラメーターとして渡すことはできますか?
注: os.system() または subprocess モジュールなどを使用して、実際のコマンド ラインを使用して、別のプロセスでスクリプトを呼び出すことができることは既に知っています。あらゆる種類の外部コマンド呼び出しを使用しないようにしています。現在のインタープリターで setup() を実行するソリューションを特に探しています。
背景として、いくつかのリリース管理シェル スクリプトを単一の Python プログラムに変換しています。タスクの 1 つは、「setup.py」を実行して、さらにプレリリース テスト用の .spec ファイルを生成することです。'setup.py' を独自のコマンド ライン オプションを使用して外部コマンドとして実行するのは、厄介な方法のように思われ、プログラムの残りの部分を複雑にします。より Pythonic な方法があるように感じます。