【问题标题】:Upgrade version of scikit-learn included in Enthought Canopy distributionEnthought Canopy 发行版中包含 scikit-learn 的升级版本
【发布时间】:2012-08-26 12:37:39
【问题描述】:

我安装了 EPD 7.3.1(现在称为 Enthought Canopy),它随 scikit-learn v 0.11 一起提供。我正在运行 Ubuntu 12.04。我需要安装 scikit-learn 的 v 0.12。

scikit-learn doc says 克隆存储库,将 scikit-learn 目录添加到您的 PYTHONPATH,并在适当位置构建扩展:python setup.py build_ext --inplace

问题在于 EPD 是它自己的封闭世界(有多个 scikit 目录):
./lib/python2.7/site-packages/scikits/
./lib/python2.7/site-packages/sklearn

然后是:
./EGG-INFO/scikit_learn/

我真的不想尝试,因为它需要很长时间才能调整到这一点。在这种情况下我应该遵循 scikit-learn 的指示吗?

【问题讨论】:

    标签: python scikit-learn enthought canopy pythonpath


    【解决方案1】:

    scikit-learn 网站上描述的操作与 EPD 中的 scikit-learn 版本无关。 Python会自动使用PYTHONPATHenvironment variable中设置的scikit-learn版本,你应该设置为scikit-learn的Git版本的目录路径。

    如果您在类 Unix 系统上使用 Bash,您应该执行以下操作:

    • install scikit-learn's latest code执行操作(在本例中我将其克隆到/home/yourname/bin/scikit-learn
    • 编辑.bashrc 并添加以下行:export PYTHONPATH="/home/yourname/bin/scikit-learn";
    • 通过键入python 打开一个新终端并以交互模式启动 Python
      • 类型:import sklearn
      • 类型:sklearn.__verion__ 现在应该显示 '0.12-git' 而不是 0.11

    为什么会这样? Python 在内部使用变量sys.path(路径的list)来跟踪它应该在其中查找模块和包的所有目录。一旦请求了模块或包,Python 将依次遍历此列表,直到找到匹配项。因此,例如,一个模块可以在sys.path 中多次列出,但只会使用列表中最先出现的版本。

    每个 Python 安装都有自己的默认路径集,列在 sys.path 中。扩展sys.path 的一种方法是在PYTHONPATH 中列出路径。一旦 Python 启动,它将读取此环境变量并将其添加到 sys.path 列表的开头。因此,如果您将另一个 scikit-learn 版本的路径添加到您的 PYTHONPATH,那么(EPD)Python 将首先找到该版本的 scikit-learn 并使用它而不是 sys.path 中进一步列出的版本。

    要查看sys.path,只需import sys,然后print sys.path。此外,例如,如果您只想在一个 Python 程序中使用 scikit-learn 的 0.12 版本,而在所有其他 Python 程序中默认使用 0.11 版本,那么您可以将 PYTHONPATH 留空,只插入 scikit- 的路径在代码顶部手动学习 0.12:

    import sys
    sys.path.insert(0, '/home/yourname/bin/scikit-learn')
    import sklearn
    

    【讨论】:

    • 在 Stack Overflow 上,社区对不好的问题投反对票,对好问题投赞成票。我现在会留下这个问题,但如果人们开始反对它,那么你有一个很好的迹象表明你可能想要删除它。
    • 我遇到了同样的问题,但我有一台 Mac。我设法仅通过 macports 安装了 scikit(不使用 scikits setup.py,中途总是以错误结束)。但是,我找不到 bashrc。我想做的就是将 EPD(学术)中的 Scikit 更新到 .13,事实证明这非常困难,任何帮助将不胜感激!
    • @Shinjitsu 尝试使用 .profile 而不是 .bashrc。让我知道它是否有效。
    • @plurker 奇怪的是,聚光灯找不到 .profile 或 .bashrc。但是,我终于能够让它工作了!但是,自从我这样做以来已经有一段时间了。我相信我从 enthought 发行版中卸载了该软件包,然后使用 zip 文件中提供的文件在终端中使用“安装”命令安装了它。
    猜你喜欢
    • 1970-01-01
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    相关资源
    最近更新 更多