如何避免使用distutils覆盖以前的软件包安装

时间:2014-03-25 01:40:05

标签: python distutils2

我有一个使用distutils的python包。我想配置setup.py来执行以下任一操作:

  • 检测以前安装的软件包版本并引发错误
  • 在继续安装之前提议删除以前安装的版本

任何提示?可能需要distutils.command.install的自定义子类,但documentation有点简洁。

1 个答案:

答案 0 :(得分:0)

好的,这是我的初步答案。希望其他人有更好的计划。我不确定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})