【问题标题】:Check if wheel exists on pypi befor installing build dependencies在安装构建依赖项之前检查 pypi 上是否存在轮子
【发布时间】:2021-10-16 18:43:03
【问题描述】:

我有一份 CI 工作,可以为许多架构构建我的项目。在这个过程中,我安装了pygit2pip,这取决于libgit2。在某些情况下,pip 从 pypi 安装轮子,不需要其他构建依赖项。但是,对于某些架构,不存在轮子,因此会执行 pygit2 的设置,这需要系统上的 libgit2 源。在这种情况下,我必须从源代码编译 libgit2。由于这是一个资源密集型过程,我只想在特定架构不存在轮子的情况下执行它。

如果 pypi 上存在当前使用的系统/架构的轮子,我如何检查(可能使用 pip)。

【问题讨论】:

    标签: python pip pypi python-wheel


    【解决方案1】:

    查看以下pip install 和/或pip download 选项:

    也许像下面这样的方法足以可靠地检查轮子是否可用(检查退出代码或检查轮子是否已实际下载):

    pip download --no-deps --only-binary :all: pygit2
    

    【讨论】:

    • 有没有办法不执行安装,只先检查一下?
    • 您可以使用pip download 尝试相同的选项。否则你可能需要另一个工具。然后你就可以直接查询PyPI的API了。
    • 但我很困惑...你是要安装还是只检查?您的问题似乎表明您想要安装同时避免源代码分发,而这正是这些选项的作用,不是吗?
    • 我可以先安装它,但我的初衷是:1.只检查pygit2的wheel是否存在,2.如果没有wheel,从源安装libgit2,3.从requirements.txt安装所有依赖项。如果我使用 pip install --only-binary ...我最终会得到 1. 尝试安装 pygit2,2. 如果 1 失败,则安装 libgit2,3. 安装 requirements.txt 中的所有依赖项,这将完成这项工作,但在我的眼睛不那么优雅了。
    • 您是否尝试过类似pip download --no-deps --only-binary :all: pygit2 的方法,然后检查返回码或检查是否确实下载了某些内容。如果这不起作用,那么我除了访问 PyPI API 或抓取 PyPI 网站之外别无他法。 -- 或者您需要在需要安装 libgit2 的环境的 CI 设置中维护一个列表。
    猜你喜欢
    • 2012-10-24
    • 2013-08-30
    • 2010-11-20
    • 1970-01-01
    • 2014-12-09
    • 2018-01-08
    • 1970-01-01
    • 2019-10-03
    • 2017-01-31
    相关资源
    最近更新 更多