在Python中安装本地附加程序

在Python中安装本地附加程序,python,setuptools,easy-install,Python,Setuptools,Easy Install,my package X的setup.py使用setuptools通过extras\u require参数选择性地安装额外的软件包Y 现在,Y包从PyPi中消失了,据我所知,也从可见的互联网上消失了轻松安装X[Y]失败,出现错误:找不到适合Y的发行版 然而,我仍然有一份Y's tarball的本地副本。Y是一个纯Python包 修改setup.py以允许此(本地?)可选额外设置的最佳方法是什么 编辑:修复是临时的,直到我找到一个合适的替代品。我不想自己开始正式维护Y:)您可以创建子类,然后重载

my package X的setup.py使用setuptools通过
extras\u require
参数选择性地安装额外的软件包Y

现在,Y包从PyPi中消失了,据我所知,也从可见的互联网上消失了<代码>轻松安装X[Y]失败,出现
错误:找不到适合Y的发行版

然而,我仍然有一份Y's tarball的本地副本。Y是一个纯Python包

修改setup.py以允许此(本地?)可选额外设置的最佳方法是什么


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

您可以创建子类,然后重载默认的
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, 
    }
)

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

我通过setuptools的
依赖关系链接
选项找到了一个快速解决方法

  • 将Y的tarball上传到某个url
    http://URL_Y
  • 添加行:
    dependency\u links=['http://URL_Y“],
    到my setup.py

  • 现在
    easy\u install X[Y]
    可以工作了,我不需要在任何地方注册Y。一旦我有了合适的解决方案,我将立即从URL_Y中删除它。

    thx@jathanism,如果我的解决方案出现问题,我将尝试这个(重炮!):)