Как избежать перезаписи предыдущей установки пакета 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})