【问题标题】:How to specify pytorch as a package requirement on windows?如何将 pytorch 指定为 Windows 上的软件包要求?
【发布时间】:2020-01-22 09:56:16
【问题描述】:

我有一个依赖于 pytorch 的 python 包,我希望 Windows 用户能够通过 pip 安装它(具体包是:https://github.com/mindsdb/lightwood,但我认为这与我的问题不太相关)。

解决此问题的最佳做法是什么?

有什么项目可以作为例子吗?

似乎 pypi 托管版本的 torch & torchvision 与 Windows 不兼容,“入门”部分建议从自定义 pytorch 存储库安装,但除此之外,我不确定理想的解决方案是什么这是安装脚本的一部分。

【问题讨论】:

    标签: python-3.x pip pytorch setup.py pypi


    【解决方案1】:

    解决此问题的最佳做法是什么?

    如果您的项目依赖于未通过 PyPI 分发的其他项目,那么您必须以一种或另一种方式通知项目的用户。我推荐以下组合:

    • 明确指定(在项目的文档页面、项目的详细说明自述文件或类似内容中)哪些依赖项不能通过 PyPI (以及可能的原因,使用适当的链接)以及获取它们的可能位置;
    • 为提升用户体验,请在您的项目旁边发布一个预先准备好的 requirements.txt 文件,其中包含适当的 --find-links 选项。

    原因(或主要原因,还有其他原因)是任何使用 pip 的人都假设(默认情况下)所有内容都将从 PyPI 下载,而不会从其他地方下载.换句话说,任何使用 pip 的人都信任 pypi.org 作为 Python 项目分发的来源。如果 pip 突然从其他来源下载工件,它将破坏这种信任。从其他来源下载应该由用户决定。

    因此,您可以在项目文档中提供requirements.txt 文件的示例,如下所示:

    # ...
    torch===1.4.0  --find-links https://download.pytorch.org/whl/torch_stable.html
    torchvision===0.5.0  --find-links https://download.pytorch.org/whl/torch_stable.html
    # ...
    

    更新

    最好的解决方案是帮助相关项目的维护者直接在 PyPI 上发布 Windows wheels

    【讨论】:

    • 我的意思是,这基本上就是我现在计划做的事情(或者更确切地说,我有一个自定义安装脚本可以单独下载这些脚本),我只是想知道是否有比“不做我做的事情”更好的解决方案想做”:p
    • 还有许多其他选择,但很可能它们都需要更多的工作,并且会违反最佳实践。 requirements.txt 解决方案简单、灵活、广为人知,遵循最佳实践并受到 pip 和许多其他工具的支持。毕竟这就是 pytorch 的分发方式,并且它适用于他们。替代方案...构建轮子(或下载它们)并自己在 PyPI 上以不同的名称发布它们。 供应商依赖项。在 conda 上分发您的项目(也许,我不知道)。使用替代分发方法(想想 zipapppexshiv 等)。
    • @George 这能回答你的问题吗?需要进一步澄清吗?
    • 它没有,因为自己构建和发布轮子并不容易,因为它需要在构建过程中涵盖所有支持的配置,并且构建 pytorch 并非易事.更不用说,阻止 Windows 上的 pytroch 通过 pypi 工作的问题是我在执行此操作时最有可能遇到的问题,我非常确定比 pytroch 开发人员和做这项工作更糟糕,因为他们失败了我可以假设我也会。
    • 这是,例如,一个更好的“解决方案”来解决这个问题,也就是不需要数百小时的工作和单独的部署基础设施,也不需要放弃:github.com/mindsdb/lightwood/blob/master/setup.py#L40 |但我觉得不太理想,所以希望能找到更好的答案
    猜你喜欢
    • 2018-08-24
    • 2012-11-15
    • 2013-12-03
    • 1970-01-01
    • 2017-05-31
    • 1970-01-01
    • 2016-09-05
    • 2020-02-28
    • 2010-11-16
    相关资源
    最近更新 更多