Очистка каталога сборки в setup.py
Вопрос
Как я мог бы сделать свой setup.py
предварительное удаление и последующее удаление каталога сборки?
Решение
Для предварительного удаления просто удалите его с помощью distutils.dir_util.remove_tree
перед вызовом setup.
Что касается post-delete, я предполагаю, что вы хотите post-delete только после выбранных команд.Создайте подкласс соответствующей команды, переопределите ее метод run (для вызова remove_tree после вызова базового run) и передайте новую команду в словарь cmdclass программы установки.
Другие советы
Делает это ответить на это?IIRC, вам нужно будет использовать --all
отметьте, чтобы избавиться от вещей за пределами build/lib
:
python setup.py clean --all
Это очищает каталог сборки перед установкой
python setup.py clean --all install
Но в соответствии с вашими требованиями:Это будет сделано как до, так и после
python setup.py clean --all install clean --all
Вот ответ, который сочетает программный подход ответа Мартина с функциональностью ответа Мэтта (a 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}
)