conda 更新 scikit-learn(还有 scipy 和 numpy)

conda update scikit-learn (also scipy and numpy)

我想当我应该使用 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?谢谢!

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

$ echo $PYTHONPATH

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

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

这在过去通常对我有用。

注意:如果您使用的是 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