ben*_*min 6 python numpy conda
我想尝试使用CondaForge的软件包(可用性和兼容性).但是,Conda似乎希望从其他渠道中选择核心库(例如NumPy)的版本.
例如,当我尝试安装新库时,Conda提议降级NumPy,但如果我要求使用相同的库和NumPy,Conda不再建议降级.为什么?
$ conda install -c conda-forge beautifulsoup4
The following NEW packages will be INSTALLED:
beautifulsoup4: 4.6.3-py36_0 conda-forge
The following packages will be UPDATED:
numpy-base: 1.14.3-py36h0ea5e3f_1 --> 1.15.0-py36h3dfced4_0
The following packages will be DOWNGRADED:
blas: 1.1-openblas conda-forge --> 1.0-mkl
numpy: 1.15.1-py36_blas_openblashd3ea46f_1 conda-forge [blas_openblas] --> 1.15.0-py36h1b885b7_0
scikit-learn: 0.19.2-py36_blas_openblasha84fab4_201 conda-forge [blas_openblas] --> 0.19.1-py36hedc7406_0
scipy: 1.1.0-py36_blas_openblash7943236_201 conda-forge [blas_openblas] --> 1.1.0-py36hc49cb51_0
Proceed ([y]/n)? n
$ conda install -c conda-forge beautifulsoup4 numpy
The following NEW packages will be INSTALLED:
beautifulsoup4: 4.6.3-py36_0 conda-forge
Proceed ([y]/n)? y
Run Code Online (Sandbox Code Playgroud)
有偏好可以提供更好的行为吗?
发生这种情况是因为你有两个通道(conda-forge和defaults),它们都包含NumPy(及其依赖项),但可能包含不同的版本/内部版本号.
例如,假设您要安装SciPy(取决于NumPy),并且世界状态为:
并且您的频道订单中的conda-forge高于默认值.如果你说conda install scipy
,那么Conda将从conda-forge中获取SciPy(因为它是最高版本号).在扫描SciPy的依赖项时,它会注意到默认情况下有更新版本的NumPy可用.认为它有用,Conda将从默认安装新版本的NumPy,即使你已经从conda-forge安装了它.如果有NumPy所依赖的软件包那么必须降级以使其工作,那就这样吧.
相反,conda install scipy numpy
或者conda config --add pinned_packages conda-forge::numpy
您正在跳过图的那一部分的依赖项查找,然后导致Conda求解器跳转到另一个通道.
这是一个相对简单的例子,绝对不包括每天出现的所有奇怪的边缘情况.
也就是说,Conda v4.6(尚未推出)将增加一个"严格的频道优先级"的概念.这将确保求解程序以首先给出的通道顺序查找包,如果找不到依赖关系,则仅跳转到不同的通道.
这将解决我们一直生活的许多猖獗的升级/降级问题.
这并不能真正解释为什么会发生这种情况,但解决方法是:
$ conda config --add pinned_packages conda-forge::numpy
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2000 次 |
最近记录: |