Conda搜索最新版本的numpy,受Python版本限制

时间:2016-01-14 13:22:28

标签: python bash numpy anaconda conda

我想在最古老的Numpy版本中进行单元测试,所以我知道代码库是否在尽可能多的Numpy版本中运行。

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

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

1 个答案:

答案 0 :(得分:3)

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

假设我们想在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/./}.*,我们感兴趣的是版本号,即捕获的组。

除了提取版本号之外,我们还需要remove the lines which are not matched by the search,这是在-n开始时的psed末尾的conda search --canonical -f "$PACKAGE" | \ sed -n "s/^$PACKAGE-\([^-]*\)-.*py${PYTHON_VERSION/./}.*/\1/p" | \ sort -Vu 命令。

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

-V

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

由于输出列表按版本号按升序排序,因此第一个条目是最低可用版本,可以使用conda search --canonical -f "$PACKAGE" | \ sed -n "s/^$PACKAGE-\([^-]*\)-.*py${PYTHON_VERSION/./}.*/\1/p" | \ sort -Vu | \ head -1

10  2

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

注意:的 康达警告build string is subject to change and should net be relied upon to extract meaningful information。因此,这种解决方案将来可能会破裂。