【问题标题】:Install local extras in Python在 Python 中安装本地附加组件
【发布时间】:2011-09-23 22:05:09
【问题描述】:

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

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

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

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


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

【问题讨论】:

    标签: python setuptools easy-install


    【解决方案1】:

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

    在 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, 
        }
    )
    

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

    【讨论】:

    • thx @jathanism,如果我的解决方案出现问题,我会试试这个(重型火炮!):)
    【解决方案2】:

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

    1. 将 Y 的 tarball 上传到某个 url http://URL_Y
    2. 将行:dependency_links = ['http://URL_Y'], 添加到我的 setup.py。

    现在easy_install X[Y] 工作了,我不必在任何地方注册 Y。一旦我有适当的修复,我会从 URL_Y 中删除它。

    【讨论】:

      猜你喜欢
      • 2020-09-25
      • 1970-01-01
      • 2017-07-24
      • 1970-01-01
      • 1970-01-01
      • 2020-08-19
      • 1970-01-01
      • 1970-01-01
      • 2013-06-06
      相关资源
      最近更新 更多