如何在 Poetry 中使用 NumPy+MKL?

问题描述

我想在我的项目中包含 NumPy+MKL 作为依赖项。看来发布工具的主要选择是setuptools、Poetry和Anaconda。

我想使用诗歌。我已经很熟悉了;这是一个非常好的包装解决方案。它旨在消除设置工具所经历的复杂性。我对 Anaconda 的研究不多,如果 Poetry 对我的包不起作用,我可能会尝试一下。

我知道 Poetry looks for wheel files on PyPI 并且目前没有像 Anaconda 那样 to support other "channels" 的计划。所以在 pyproject.toml 中无法指定如下内容

[tool.poetry.dependencies]
numpy = "1.21.1+mkl"

但是 Poetry 有一个看起来很有前途的特性:url dependencies。似乎如果有我想包含的 NumPy+MKL 包的 URL,我可以指定:

[tool.poetry.dependencies]
numpy = { url = "https://www.lfd.uci.edu/~gohlke/pythonlibs/numpy‑1.21.1+mkl‑cp39‑cp39‑win_amd64.whl" }

这正是我想要做的,除了似乎没有一个可用于此目的的现有 URL。 (当我尝试上述地址时,我在 Firefox 中收到“安全连接失败”错误。)

我是否正确考虑了这个问题?有谁知道我可以在 pyproject.toml 中指定的网址吗?

解决方法

Christoph Gohlke's site 上提供的轮子仅供个人使用,用于分发。他的页面不是 pip 存储库,这就是他大量使用 Javascript URL 混淆来下载文件的原因。 numpy==1.21.1+mkl 不是有效的版本标识符。

我认为您可能也误解了 MKL 构建的确切含义。它们使用与来自 PyPI 的 regular NumPy package 相同的基本代码 - 除了 C 和 Fortran 部分与 Intel's Math Kernel Library 链接的事实之外,它们没有什么不同,在某些情况下提供了一些速度优势。它们并不神奇,它们没有实现任何新功能,除了速度因素之外没有什么不同,除非使用非常大的数据集,否则通常不会那么明显。

如果您的用户想要使用 NumPy 的 MKL 链接版本,他们已经知道它并知道如何独立于您的软件包安装它。您的所有包需要的是满足代码要求的最低版本的常规 NumPy 依赖项。