2012-02-02 74 views
3

我有一个包含C++扩展的python包。在setup.py中清洁C++扩展构建目录

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

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

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

回答

0

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

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

谢谢!这看起来像一个很好的解决方案 – 2012-03-06 17:34:22

+0

这看起来特别危险,是不是有一个更安全的方法来做到这一点? – 2018-02-05 22:32:14

0

接受的答案让我害怕的路径是相对的,格外小心,应删除从Python脚本在用户侧什么时候服用。一旦你建立一个路径多一点安全,你可以通过DIR到shutil.rmtree

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

:你应该喜欢的东西让你的生成位置。

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