我有一个包含C ++扩展名的python包。
C ++扩展使用自己的Makefile在setup.py
内构建,.so文件在其自己的子文件夹中创建,然后复制到构建文件夹中。
当我调用python setup.py clean
时,只删除了构建目录,但是cxxextension/build
没有删除,所以如果我再次构建它,它只是被复制而不是重新编译。
如何指示setup.py clean
删除我的cxxextension/build
文件夹?
答案 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?