如何将 NumPy+MKL 与 Poetry 结合使用?

How to use NumPy+MKL with Poetry?

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

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

我知道 Poetry and doesn't currently have plans to support other "channels" 就像 Anaconda 一样。所以在 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 中指定的 URL?

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

我想您可能还误解了 MKL 构建的确切含义。它们使用与 regular NumPy package from PyPI - there's nothing different about them except for the fact that the C and Fortran parts are linked against Intel's Math Kernel Library 相同的基本代码,在某些情况下提供一些速度优势。它们并不神奇,它们不实现任何新功能,除了速度因素外没有什么不同,速度因素通常不会那么明显,除非无论如何使用非常大的数据集。

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