Как избежать перезаписи предыдущей установки пакета distutils

У меня есть пакет Python, который использует distutils. Я хотел бы настроить setup.py для выполнения одного из следующих действий:

  • Обнаружить ранее установленную версию пакета и вызвать ошибку
  • Предложите удалить ранее установленную версию, прежде чем продолжить установку

Есть намеки? Вероятно, нужен собственный подкласс distutils.command.install, но документация немного лаконична.

1 ответ

Хорошо, вот мой первоначальный ответ. Надеюсь, у кого-то есть план получше. Я не уверен, что Install.install_libbase - это правильное место для поиска, или это просто правильно в моей системе..

import distutils.command.install

class Install(distutils.command.install.install):
    def run(self):
        name = self.config_vars['dist_name']
        if name in os.listdir(self.install_libbase):
            raise Exception("It appears another version of %s is already "
                            "installed at %s; remove this before installing." 
                            % (name, self.install_libbase))
        print("Installing to %s" % self.install_libbase)
        return distutils.command.install.install.run(self)

setup(cmdclass={'install': Install})
Другие вопросы по тегам