更新conda中的scikit-learn(以及scipy和numpy)库。

5

我想我在使用pip install时搞砸了,因为我应该使用conda。结果我无法将scikit-learn软件包更新到最新版本。我使用conda和pip卸载了scikit-learn,然后再次使用conda安装,但现在我导入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?谢谢!
2个回答

12

看起来conda报告的版本与你在运行Python时导入的版本不匹配。这使我想到你可能在多个位置安装了这些软件包,并且设置了$PYTHONPATH变量,以便Python可以找到不同的安装(有时安装某些工具包会在你的bash / sh启动脚本中添加此设置)。尝试运行:

conda list
$ 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来安装每个第三方Python包吗?还是我也可以使用pip install - Blue482
1
如果可能的话,我建议使用conda安装(它可以保持所有依赖项最新),但是如果一个包在conda中不可用,你也可以使用“pip”:首先执行“conda install pip”,如果你还没有安装。 - jakevdp
使用以下命令安装scikit-learn并升级:pip install --user --install-option="--prefix=" -U scikit-learn,有关安装和升级的帮助,请参阅http://scikit-learn.org/stable/developers/advanced_installation.html。 - Ruthger Righart
安装了两个 scipy(以及两个 numpy),一个在 conda 中,另一个在 /usr/local/lib/python3.5/dist-packages/ 中。使用 pip3 uninstall scipy/usr/local/lib 卸载了这两个模块,然后 anaconda 又开始使用自己的安装,可以通过 conda update 进行更新。 - Aleksander Lidtke

3

注意:如果您正在使用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做出的努力:
将我的scikit-learn从0.19.1升级到在Google VM实例上安装的Ubuntu上的0.19.2:
在终端中运行以下命令:
首先,通过使用以下命令检查现有可用版本的软件包:
conda list    

它会在输出中显示不同的软件包及其安装版本。在此检查scikit-learn。例如,对于我来说,输出如下:
scikit-learn              0.19.1           py36hedc7406_0  

现在我想升级到0.19.2版本,也就是最新的2018年7月发布的版本。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接