これは、distutilsを使用して簡単に行うことができます。distutils.core.Command setup.pyの中にサブクラス化します。例えば
:
from distutils.core import setup, Command
import os, sys
class CleanCommand(Command):
description = "custom clean command that forcefully removes dist/build directories"
user_options = []
def initialize_options(self):
self.cwd = None
def finalize_options(self):
self.cwd = os.getcwd()
def run(self):
assert os.getcwd() == self.cwd, 'Must be in package root: %s' % self.cwd
os.system('rm -rf ./build ./dist')
あなたが(設定でそれを参照する必要があり、コマンドを有効にするには):あなたは、何としてもこのよう組み込みコマンドを無効にすることができ
setup(
# stuff omitted for conciseness.
cmdclass={
'clean': CleanCommand
}
注意私は「きれい」でやった。 (私は「DIST」と「ビルド」ディレクトリを残しどのようにビルトインバージョンが好きではありませんでした。)が使用されている規則の数
% python setup.py --help-commands | grep clean
clean custom clean command that forcefully removes dist/build dirs.
あります
- あなたが指定したが、任意のコマンドライン引数user_options。
- initialize_options()メソッドで使用する変数を宣言します。これは、初期化後に呼び出され、サブクラスのカスタム名前空間を設定します。
- finalize_options()メソッドは、run()の直前に呼び出されます。
- コマンド自体の不具合は、run()で発生します。その前に他の準備作業を行ってください。
使用するための最良の例では、まさにこのようなinstall.pyまたはbuild.pyとしてPYTHON_DIR /のdistutils /コマンドで見つけ、デフォルトのコマンドのいずれかのソースコードを見ることです。
これは質問された質問に答えますが、virtualenvは問題に対するより良い答えです。 –