问题描述
我想在我的项目中包含 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 依赖项。