2012-02-02 78 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?