61

我怎样才能使我的setup.py预删除和后删除构建目录?

4

4 回答 4

135

回答了吗?IIRC,您需要使用该--all标志来摆脱以下内容build/lib

python setup.py clean --all
于 2009-10-20T14:12:39.410 回答
15

对于预删除,只需distutils.dir_util.remove_tree在调用 setup 之前将其删除即可。

对于删除后,我假设您只想在选定命令后进行后删除。子类化相应的命令,覆盖其运行方法(在调用基本运行后调用 remove_tree),并将新命令传递到 setup 的 cmdclass 字典中。

于 2009-10-20T14:13:42.643 回答
11

这会在安装之前清除构建目录

python setup.py clean --all install

但根据您的要求:这将在之前和之后进行

python setup.py clean --all install clean --all
于 2017-01-20T16:55:52.473 回答
6

这是一个将马丁答案的编程方法与马特答案的功能相结合的答案(一个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 __name__ == '__main__':

    setup(
        name="myname",
        ...
        cmdclass={'install': MyInstall}
    )
于 2015-05-14T15:44:09.037 回答