2009-10-20 17 views

Respuesta

6

Para pre-eliminación, simplemente borrarlo con distutils.dir_util.remove_tree antes de llamar a la instalación.

Para la eliminación posterior, supongo que solo desea post-eliminar después de los comandos seleccionados. Subclase el comando respectivo, anule su método de ejecución (para invocar remove_tree después de llamar a la ejecución base) y pase el nuevo comando al diccionario de configuración de cmdclass.

73

¿Lo responde this? IIRC, necesitará usar la bandera --all para deshacerse de cosas fuera del build/lib:

python setup.py clean --all 
+0

Parece que no todas las secuencias de comandos 'setup.py' admiten' clean'. Ejemplo: NumPy – kevinarpe

3

Aquí es una respuesta que combina el enfoque programático de la respuesta de Martin con la funcionalidad de la respuesta de Matt (un clean que se encarga de todas las posibles áreas de construcción):

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

Esto borra el directorio de construcción antes de instalar

python setup.py clean --all install 

Pero de acuerdo a sus necesidades: Esto va a hacer antes y después de

python setup.py clean --all install clean --all 
Cuestiones relacionadas