gpt4 book ai didi

python - conda搜索最旧版本的numpy,受限于Python版本

转载 作者:太空宇宙 更新时间:2023-11-03 10:59:59 25 4
gpt4 key购买 nike

我想在最旧版本的 Numpy 中进行单元测试,这样我就可以知道代码库是否适用于尽可能多的 Numpy 版本。

我正在通过 conda 安装 numpy,并在多个 Python 版本中进行测试。但是,在 conda 中,不同版本的 Python 每个都有不同的 numpy 版本子集可用。

对于给定版本的 python,是否有一种简单的方法可以找到 conda 上可用的 numpy 版本,以及这些版本中最低的版本?

最佳答案

首先,我们需要获取完整的版本列表

假设我们想要获取 python 3.2 下最早可用的 numpy 版本,那么我们可以像这样设置参数。

PACKAGE=numpy
PYTHON_VERSION=3.2

我们可以通过获取以该包作为全名 conda search --canonical -f "$PACKAGE" 并使用 sed 搜索具有正确 python 版本号的包。规范包名称 follow the format name-version-buildstring,buildstring 应该在某处包含 python 版本,尽管格式为 py32 版本 3.2 等。因此我们需要搜索 py${PYTHON_VERSION/./>,其中版本号中的.已被移除。

完整的搜索词应该是^$PACKAGE-\([^-]*\)-.*py${PYTHON_VERSION/./}.*,我们对版本感兴趣number,即捕获组。

除了提取版本号,我们还需要remove the lines which are not matched by the search ,这是在 sed 命令的开头使用 -n 并在结尾使用 p 完成的。

通过以下代码行,我们可以获得给定 python 版本可用的软件包版本的完整列表:

conda search --canonical -f "$PACKAGE" | \
sed -n "s/^$PACKAGE-\([^-]*\)-.*py${PYTHON_VERSION/./}.*/\1/p" | \
sort -Vu

如果您没有可用于排序的 -V 标志,here is an alternative solution .也就是说,无论如何,conda search 提供的列表应该按版本号排序,-V 标志以防万一。需要 -u 标志来确保输出是唯一的,因为可能有多个构建具有相同的包版本和 python 版本。

由于输出列表按版本号升序排列,第一个条目是最低可用版本,可以使用 head -1 获取。

conda search --canonical -f "$PACKAGE" | \
sed -n "s/^$PACKAGE-\([^-]*\)-.*py${PYTHON_VERSION/./}.*/\1/p" | \
sort -Vu | \
head -1

我们完成了。这应该适用于任何 PACKAGE 和 PYTHON_VERSION 组合。

注意:Conda 确实警告 build string is subject to change and should net be relied upon to extract meaningful information .因此,此解决方案将来可能会失败。

关于python - conda搜索最旧版本的numpy,受限于Python版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34790725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com