2009-10-20 113 views

回答

6

对于预删除,只调用安装之前distutils.dir_util.remove_tree删除。

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

73

请问this回答吗? IIRC,你需要使用--all标志得到的build/lib外摆脱的东西:

python setup.py clean --all 
+0

似乎并非所有'setup.py'脚本都支持'clean'。例如:NumPy – kevinarpe 2016-06-15 07:14:11

3

这里是一个融合了马丁的回答的编程方法与马特的答案的功能的答案(一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} 
    ) 
2

这将清除安装

之前构建目录
python setup.py clean --all install 

但根据您的要求:这会前做,之后

python setup.py clean --all install clean --all