Conda:为什么环境停留在blas 1.0



Conda还有另一种blas,mkl等的变体,我不知道,我无法解决,非常感谢您的帮助。也就是说,通常,在conda update --all和偶尔我的blas, x.y, mkl, conda-forge升级到一些版本x1.y1比以前更高。但是自从大约一个月前我的blas版本降级到1.0版本

(py) ~>conda list | grep mkl
blas                      1.0                         mkl    conda-forge
从那以后,它就一直停留在那里,即使至少在写 的时候
(py) ~>conda search -f blas | grep mkl
Loading channels: done
# Name                       Version           Build  Channel             
blas                            2.21             mkl  conda-forge         

是否有办法找出为什么,哪个包,或者什么让我在1.0,即使至少2.21是可用的?

使用mamba repoquery

Mamba在Conda上添加的额外命令之一是repoquery工具。也就是说,whoneeds子命令将识别元数据中列出的具有blas需求的包。

这是一个来自我周围的旧环境的例子,碰巧安装了blas=1.0=mkl

## activate the environment
$ mamba activate umap
## query for depending packages
(umap) $ mamba repoquery whoneeds blas
# ...
Executing the query blas
Name         Version Build          Depends      Channel  
────────────────────────────────────────────────────────────
scikit-learn 0.20.3  py37h27c97d8_0 blas 1.0 mkl pkgs/main
mkl_random   1.0.2   py37h27c97d8_0 blas 1.0 mkl pkgs/main
numpy        1.16.2  py37hacdab7b_0 blas 1.0 mkl pkgs/main
numpy-base   1.16.2  py37h6575580_0 blas 1.0 mkl pkgs/main
mkl_fft      1.0.10  py37h5e564d8_0 blas 1.0 mkl pkgs/main
scipy        1.2.1   py37h1410ff5_0 blas 1.0 mkl pkgs/main

然而,为了确定一些责任链,我们可能需要查看环境中的显式规范。对于这个环境,它有点微不足道:

## the `--from-history` flag will show only explicit specifications
$ mamba env export -n umap --from-history
name: umap
channels:
- defaults
dependencies:
- umap-learn

也就是说,在这个环境中只有一个指定的包,而且它不在列表中。将依赖的包看作一个树可能会更有帮助:

(umap) $ mamba repoquery whoneeds --tree blas
# ...
Executing the query blas
blas[1.0]
├─ scikit-learn[0.20.3]
│  └─ umap-learn[0.3.8]
├─ mkl_random[1.0.2]
│  └─ numpy[1.16.2]
│     ├─ scikit-learn already visited
│     ├─ numba[0.43.1]
│     │  └─ umap-learn already visited
│     ├─ mkl_fft[1.0.10]
│     ├─ scipy[1.2.1]
│     │  ├─ scikit-learn already visited
│     │  └─ umap-learn already visited
│     └─ umap-learn already visited
├─ numpy already visited
├─ numpy-base[1.16.2]
│  ├─ mkl_random already visited
│  └─ numpy already visited
├─ mkl_fft already visited
└─ scipy already visited

在这里,我们看到umap-learn是如何连接到直接指定blas=1.0的包链的。在这种情况下,我可能只运行mamba update umap-learn,它会继续前进。也就是说,它不会像op中那样卡住。

新版本试运行

一个不那么法医学的方法是让Conda/Mamba责怪一个包裹。这并不总是可靠的,但有时它是有效的。康达在这方面特别糟糕,所以我想试试曼巴:

## try installing a newer blas, but use `-d` for dry-run
mamba install -n py -d 'blas >1'

在最好的情况下,它将报告一个与此请求冲突的包。

相关内容

  • 没有找到相关文章

最新更新