conda 更新 scikit-learn(也是 scipy 和 numpy)

Posted

技术标签:

【中文标题】conda 更新 scikit-learn(也是 scipy 和 numpy)【英文标题】:conda update scikit-learn (also scipy and numpy) 【发布时间】:2016-08-18 20:08:57 【问题描述】:

当我应该使用 conda 时,我认为我使用 pip install 搞砸了。结果我无法将 scikit-learn 包更新到最新版本。我用 conda 和 pip 卸载了 scikit-learn,然后使用 conda 再次安装,但现在我有问题 import sklearn:

Python 2.7.11 |Anaconda custom (x86_64)| (default, Dec  6 2015, 18:57:58) 
[GCC 4.2.1 (Apple Inc. build 5577)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org

from sklearn import metrics
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/bowang/anaconda/lib/python2.7/site-packages/sklearn/metrics/__init__.py", line 7, in <module>
    from .ranking import auc
ImportError: No module named ranking 

似乎还有人混淆它实际使用的是哪个版本的 sklearn/numpy/scipy:

$ conda update scikit-learn
Using Anaconda Cloud api site https://api.anaconda.org
Fetching package metadata: ......
Solving package specifications: .........

# All requested packages already installed.
# packages in environment at /Users/bowang/anaconda:
#
scikit-learn              0.15.2               np18py27_0    http://repo.continuum.io/pkgs/free/osx-64/scikit-learn-0.15.2-np18py27_0.tar.bz2

$ conda update scipy
Using Anaconda Cloud api site https://api.anaconda.org
Fetching package metadata: ......
Solving package specifications: .........

# All requested packages already installed.
# packages in environment at /Users/bowang/anaconda:
#
scipy                     0.14.0               np18py27_0    http://repo.continuum.io/pkgs/free/osx-64/scipy-0.14.0-np18py27_0.tar.bz2

以上显示我仍然无法更新到最新版本,但是:

$ python
Python 2.7.11 |Anaconda custom (x86_64)| (default, Dec  6 2015, 18:57:58) 
[GCC 4.2.1 (Apple Inc. build 5577)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org
>>> import scipy
>>> scipy.__version__
'0.17.0'
>>> import numpy
>>> numpy.__version__
'1.11.0'
>>> import sklearn
>>> sklearn.__version__
'0.17.1'

有没有办法清理和解决这里的所有困惑并允许我更新并使用最新版本的 sklearn/numpy/scipy?谢谢!

【问题讨论】:

【参考方案1】:

看起来 conda 报告的版本与您在运行 Python 时导入的版本不匹配。这让我觉得你已经在多个地方安装了这些包,并设置了 $PYTHONPATH 变量,以便 Python 找到不同的安装(有时安装一些工具包会在你的 bash/sh 启动脚本中添加它)尝试运行

$ echo $PYTHONPATH

如果此处显示任何内容,请找到您的启动脚本并将其注释掉。 确保$PYTHONPATH 为空后,尝试以下操作:

$ conda update conda  # make sure package listing is up-to-date
$ conda remove numpy scipy scikit-learn
$ conda install scikit-learn

过去这通常对我有用。

【讨论】:

谢谢 J! $PYTHONPATH 已经是空的,所以我 conda 删除并安装了 scikit-learn,现在我有了最新版本。仔细检查一下,从现在开始我将不得不使用conda install 来安装每个 3rd 方 python 包?或者我也可以使用pip install 我建议尽可能安装 conda(它使所有依赖项保持最新)但如果包不能通过 conda 获得,您也可以使用 pip:首先执行 @987654330 @如果你还没有。 pip install --user --install-option="--prefix=" -U scikit-learn ,安装升级请看帮助页面scikit-learn.org/stable/developers/advanced_installation.html 安装了两个scipys(和两个numpys,就此而言),一个在conda,一个在/usr/local/lib/python3.5/dist-packages/。使用pip3 uninstall scipy/usr/local/lib 卸载两个模块,然后anaconda 重新使用自己的安装,可以使用conda update 进行更新。【参考方案2】:

注意:如果您使用 Anaconda 或 Miniconda,请不要使用 pip 命令

我尝试了以下命令:

!conda update conda 
!pip install -U scikit-learn

它会安装所需的包,也会显示在conda list,但如果你尝试导入该包,它将不起作用。

在http://scikit-learn.org/stable/install.html 网站上,它被称为: 警告要升级或卸载随 Anaconda 或 conda 安装的 scikit-learn,您不应使用 pip。

以下为我在 Anaconda-Jupyter Notebook 上的 scikit-learn 工作。

在安装在 Google VM 实例上的 Ubuntu 上的 anaconda 中将我的 scikit-learn 从 0.19.1 升级到 0.19.2:

在终端中运行以下命令:

首先,使用以下命令检查现有可用包的版本:

conda list    

它将在输出中显示不同的软件包及其安装的版本。在这里检查 scikit-learn。例如对我来说,输出是:

scikit-learn              0.19.1           py36hedc7406_0  

现在我想升级到 2018 年 7 月的 0.19.2 版本,即最新的可用版本。

conda config --append channels conda-forge
conda install scikit-learn=0.19.2

现在使用以下命令检查所需版本的 scikit-learn 是否安装正确:

conda list 

对我来说,输出是:

scikit-learn              0.19.2          py36_blas_openblasha84fab4_201  [blas_openblas]  conda-forge

【讨论】:

以上是关于conda 更新 scikit-learn(也是 scipy 和 numpy)的主要内容,如果未能解决你的问题,请参考以下文章

无法在 anaconda 中升级到 scikit-learn v0.22.1

导入sklearn时出现conda sklearn错误

使用 yml 环境获取 scikit-learn 版本警告

scikit-learn 没有在 jupyter notebook 中导入

anaconda jupyter notebook 中的每个 conda 包都没有找到模块错误

当上传者为“conda-forge”时,更新 conda-forge 中的包