2012-02-02 4 views
3

C++ 확장이 포함 된 Python 패키지가 있습니다.setup.py의 C++ 확장 빌드 디렉토리

C++ 확장명은 자체 Makefile을 사용하여 setup.py 내에 작성되며 .so 파일은 자체 하위 폴더에서 만든 다음 빌드 폴더에 복사됩니다.

을 호출하면 빌드 디렉토리 만 제거되지만 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

감사합니다! 이것은 좋은 해결책처럼 보입니다. –

+0

특히 위험 해 보입니다. 안전한 방법이 없습니까? –

0

허용 대답이 나를 무서워. 당신은 같은 것을 사용하여 빌드 위치를 확인해야합니다

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

당신이 좀 더 안전하게 경로를 구축 당신이 shutil.rmtree에 디렉토리를 전달할 수 있습니다되면.

P. 현재 경로를 안전하게 얻는 더 좋은 방법은 여기에 있습니다. How do I get the path and name of the file that is currently executing?