在Python中安装本地附加功能

时间:2011-06-27 23:51:19

标签: python setuptools easy-install

我的软件包X的setup.py使用setuptools通过extras_require参数可选地安装额外的软件包Y。

现在,包装Y从PyPi消失了,据我所知,从可见的互联网上消失了。 easy_install X[Y] error: Could not find suitable distribution for Y失败。

但是,我仍然有Y的tarball的本地副本。 Y是一个纯Python包。

修改setup.py以允许此(本地?)可选附加内容的最佳方法是什么?


编辑:修复是暂时的,直到我找到一个合适的替代品。我想要自己开始正式维护Y:)

2 个答案:

答案 0 :(得分:1)

您可以继承setuptools.Command,然后重载默认的install命令。然后你可以执行一个安装依赖项的子进程。这是一个黑客,但这就是你要求的!

在setup.py中:

from setuptools import Command
class MyInstallCommand(Command):
    # Overload the 'install' command to do default install but also install
    # your provided tarball. Blah blah blah read the docs on what to do here.

setup(
    name='mypackage',
    # etc ... and then...
    # Overload the 'install' command 
    cmdclass={
        'install': MyInstallCommand, 
    }
)

我过分简单化了,但这是基本的要点。

答案 1 :(得分:1)

我通过setuptools的dependency_links选项找到了一个快速的解决方法。

  1. 将Y的tarball上传到某个网址http://URL_Y
  2. 将行dependency_links = ['http://URL_Y'],添加到我的setup.py。
  3. 现在easy_install X[Y]正常工作,我无需在任何地方注册Y.我会在得到正确修复后立即将其从URL_Y中删除。