2009-10-20 2 views

ответ

6

Для предварительного удаления, просто удалите его с distutils.dir_util.remove_tree перед вызовом установки.

Для post-delete я предполагаю, что вы хотите отправлять сообщения только после выбранных команд. Подкласс соответствующей команды, переопределить его метод выполнения (вызывать remove_tree после вызова базового прогона) и передать новую команду в словарь cmdclass установки.

73

this ответьте на это? IIRC, вам нужно использовать --all флаг, чтобы избавиться от вещей вне build/lib:

python setup.py clean --all 
+0

Кажется, что не все скрипты 'setup.py' поддерживают' clean'. Пример: NumPy – kevinarpe

3

Вот ответ, который сочетает в себе программный подход ответа Мартина с функциональностью ответа Мэтты (а clean, что берет на себя всю возможную области сборки):

from distutils.core import setup 
from distutils.command.clean import clean 
from distutils.command.install import install 

class MyInstall(install): 

    # Calls the default run command, then deletes the build area 
    # (equivalent to "setup clean --all"). 
    def run(self): 
     install.run(self) 
     c = clean(self.distribution) 
     c.all = True 
     c.finalize_options() 
     c.run() 

if __name__ == '__main__': 

    setup(
     name="myname", 
     ... 
     cmdclass={'install': MyInstall} 
    ) 
2

Это очищает папку сборки до установки

python setup.py clean --all install 

Но в соответствии с вашими требованиями: Это будет делать это раньше, и после того, как

python setup.py clean --all install clean --all 
Смежные вопросы