跳转到主要内容

元包,提供支持给定Python版本和平台的旧版NumPy。如果平台上的wheels只针对较新版本的NumPy可用,则指定该NumPy版本。

项目描述

PyPI

关于

~~ 以下是不适应的oldest-supported-numpy的原始Readme ~~

这是一个元包,可以用于pyproject.toml文件,在构建时自动提供支持给定Python版本和平台的旧版NumPy。对于具有预构建wheels的Numpy平台,提供的版本也具有预构建的Numpy wheel。

使用旧版NumPy作为构建时依赖项的原因是ABI兼容性。使用旧版NumPy版本编译的二进制文件与新版NumPy版本二进制兼容,但反之则不然。此元包的存在是为了使处理更加方便,无需在所有需要它的包中手动重复相同的列表。

换句话说

[build-system]
requires = [
    "wheel",
    "setuptools",
    "numpy==1.13.3; python_version=='3.5'",
    "numpy==1.13.3; python_version=='3.6'",
    "numpy==1.14.5; python_version=='3.7'",
    # more numpy requirements...
]

可以被替换为

[build-system]
requires = ["wheel", "setuptools", "oldest-supported-numpy"]

随着新Python版本的发布,pyproject.toml文件无需更新。

问答

为什么在这个仓库中使用install_requires定义Numpy的版本锁定?

Numpy的版本锁定是在setup.cfg文件中以install_requires依赖项的形式定义的,而不是在pyproject.toml文件中作为构建时依赖项。这是故意的,因为实际上Numpy并不是构建oldest-supported-numpy的轮子所必需的。我们在这里需要确保,当oldest-supported-numpy被安装到使用它的软件包的构建环境中时,Numpy也会作为构建环境中的runtime依赖项被安装。

换一种方式来考虑这个问题,因为我们只发布(通用)oldest-supported-numpy的轮子,这个轮子不包含pyproject.tomlsetup.cfgsetup.py代码——它只包含元数据,包括当安装oldest-supported-numpy时由pip安装的依赖项。

如果我的软件包需要Numpy的最新版本,我能使用这个方法吗?

在许多情况下,即使你的软件包可能需要比这里锁定的版本更新的Numpy版本,这通常是一个运行时需求,即用于运行(而不是构建)你的软件包。在许多情况下,除非你使用Numpy C API的最近功能,否则你仍然可以使用较旧的Numpy版本来构建你的软件包,因此你仍然可以使用oldest-supported-numpy。你仍然可以在install_requires中强加更近期的Numpy需求。

关于给这个软件包起一个更吸引人的名字,有什么看法吗?

就软件包名称而言,当前名称并不非常吸引人,但它非常具有描述性。这个软件包仅用于在pyproject.toml文件中定义构建时依赖项,所以一个描述性的名称比一个吸引人的名称更重要!

如果我认为其中一个锁定是错误的或过时的,该怎么办?

如果你认为有问题或可以改进的地方,请随时提交一个问题或拉取请求!

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定选择哪一个,请了解更多关于安装软件包的信息。

源分发

pymor-oldest-supported-numpy-2023.1.4.tar.gz (3.8 kB 查看散列)

上传时间

构建分发

pymor_oldest_supported_numpy-2023.1.4-py3-none-any.whl (3.9 kB 查看散列)

上传时间 Python 3

支持者

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面