web-dev-qa-db-ja.com

setup.pyのビルドディレクトリのクリーニング

どうすればsetup.pyビルドディレクトリの削除前と削除後?

41
Ram Rachum

削除前に、セットアップを呼び出す前に、distutils.dir_util.remove_treeで削除するだけです。

削除後の場合は、選択したコマンドの後にのみ削除することを想定しています。それぞれのコマンドをサブクラス化し、そのrunメソッドをオーバーライドして(基本runを呼び出した後にremove_treeを呼び出す)、新しいコマンドをセットアップのcmdclass辞書に渡します。

10

this 答えますか? IIRCでは、--allフラグを使用して、build/lib以外の要素を削除する必要があります。

python setup.py clean --all
99
Matt Ball

これにより、インストールする前にビルドディレクトリがクリアされます。

python setup.py clean --all install

しかし、あなたの要件に応じて:これは前と後にそれを行います

python setup.py clean --all install clean --all
7
Adrian Lopez

以下は、Martinの答えのプログラムによるアプローチとMattの答えの機能(可能なすべてのビルドエリアを処理するclean)を組み合わせた答えです。

from distutils.core import setup
from distutils.command.clean import clean
from distutils.command.install import install

class MyInstall(install):

    # Calls the default run command, then deletes the build area
    # (equivalent to "setup clean --all").
    def run(self):
        install.run(self)
        c = clean(self.distribution)
        c.all = True
        c.finalize_options()
        c.run()

if __== '__main__':

    setup(
        name="myname",
        ...
        cmdclass={'install': MyInstall}
    )
6
Alan