在setup.py中清理C ++扩展构建目录

时间:2012-02-02 18:34:54

标签: python distutils

我有一个包含C ++扩展名的python包。

C ++扩展使用自己的Makefile在setup.py内构建,.so文件在其自己的子文件夹中创建,然后复制到构建文件夹中。

当我调用python setup.py clean时,只删除了构建目录,但是cxxextension/build没有删除,所以如果我再次构建它,它只是被复制而不是重新编译。

如何指示setup.py clean删除我的cxxextension/build文件夹?

2 个答案:

答案 0 :(得分:0)

最简单的方法可能是在setup.py中手动处理它。你可以在调用distutils.setup之前添加这样的东西:

import sys, shutil
if 'clean' in sys.argv:
    shutil.rmtree('cxxextension/build')

答案 1 :(得分:0)

接受的答案让我害怕,因为路径是相对的,当从python脚本中删除用户端的任何内容时应该格外小心。您应该使用以下内容获取构建位置:

curdir = os.path.dirname(os.path.realpath(__file__))
buildir = curdir+os.sep+"build"

更安全地构建路径后,您可以将目录传递给shutil.rmtree

P.S。安全获取当前路径的更好方法是How do I get the path and name of the file that is currently executing?