Python Anaconda Windows 10的XGBoost安装问题(2018年5月18日)

时间:2018-05-19 00:28:11

标签: python python-3.x windows-10 anaconda xgboost

在过去的几天里,我尝试使用

中的说明安装XGBoost

有些说明是直截了当的(例如conda install -c conda-forge xgboost)。其他人涉及几十个步骤,其中一些步骤不清楚并且像我这样的新手感到困惑。

某些安装似乎有效,但在jupyter笔记本中导入模块失败了。例如,我可以在...\Anaconda2\envs\py36\Lib\site-packages\xgboost-0.71-py3.6.egg\xgboost看到已安装的文件,但导入会产生错误。

我的最新尝试是按照https://www.kaggle.com/general/30163#latest-330213conda install -c anaconda py-xgboost发布的说明进行的。

同样,安装似乎正常工作:我可以在...\Anaconda2\envs\py36\Lib\site-packages\xgboost下看到已安装的文件。但是当我尝试使用

导入模块时,在我的笔记本中

from xgboost import XGBRegressor

import xgboost

我得到OSError: [WinError 126] The specified module could not be found error.

完整的追溯如下。

有解决方法吗?更好的安装方式?我想继续与Dan Becker一起介绍ML on the kaggle!

版本:

 python version : 3.6.4150.1013
  conda version : 4.3.30

  Microsoft Windows : Version 10.0.16299.431
           platform : win-64
           git bash : launches a window labeled `MINGW64:/c/users/karls`

TRACEBACK:

---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
<ipython-input-7-15d947748610> in <module>()
----> 1 from xgboost import XGBRegressor   # OSError: [WinError 126] The specified module could not be found
      2 
      3 my_model = XGBRegressor()
      4 # Add silent=True to avoid printing out updates with each cycle
      5 my_model.fit(train_X, train_y, verbose=False)

~\Anaconda2\envs\py36\lib\site-packages\xgboost\__init__.py in <module>()
      9 import os
     10 
---> 11 from .core import DMatrix, Booster
     12 from .training import train, cv
     13 from . import rabit                   # noqa

~\Anaconda2\envs\py36\lib\site-packages\xgboost\core.py in <module>()
    113 
    114 # load the XGBoost library globally
--> 115 _LIB = _load_lib()
    116 
    117 

~\Anaconda2\envs\py36\lib\site-packages\xgboost\core.py in _load_lib()
    107     if len(lib_path) == 0:
    108         return None
--> 109     lib = ctypes.cdll.LoadLibrary(lib_path[0])
    110     lib.XGBGetLastError.restype = ctypes.c_char_p
    111     return lib

~\Anaconda2\envs\py36\lib\ctypes\__init__.py in LoadLibrary(self, name)
    424 
    425     def LoadLibrary(self, name):
--> 426         return self._dlltype(name)
    427 
    428 cdll = LibraryLoader(CDLL)

~\Anaconda2\envs\py36\lib\ctypes\__init__.py in __init__(self, name, mode, handle, use_errno, use_last_error)
    346 
    347         if handle is None:
--> 348             self._handle = _dlopen(self._name, mode)
    349         else:
    350             self._handle = handle

OSError: [WinError 126] The specified module could not be found

编辑1 安装尝试次数

示例1:conda install -c anaconda py-xgboost

  1. 启动Anaconda提示
  2. 激活py36
  3. 运行conda install -c anaconda py-xgboost
  4. 以下是我几天前尝试此安装时的命令窗口结果(当我今天回溯这些步骤时,在“已安装所有请求的软件包”下面确认):

    (py36) C:\Users\karls>conda install -c anaconda py-xgboost
    Fetching package metadata ...............
    Solving package specifications: .
    
    Package plan for installation in environment C:\Users\karls\Anaconda2\envs\py36:
    
    The following packages will be UPDATED:
    
        bzip2:        1.0.6-haa5b126_2        --> 1.0.6-vc14_3          anaconda [vc14]
    
    The following packages will be SUPERSEDED by a higher-priority channel:
    
        cryptography: 2.1.4-py36he1d7878_0    --> 2.0.3-py36h123decb_1  anaconda
        curl:         7.58.0-h7602738_0       --> 7.55.1-vc14hdaba4a4_3 anaconda [vc14]
        freetype:     2.8-h51f8f2c_1          --> 2.8-vc14h17c9bdf_0    anaconda [vc14]
        hdf5:         1.10.1-h98b8871_1       --> 1.10.1-vc14hb361328_0 anaconda [vc14]
        icu:          58.2-ha66f8fd_1         --> 58.2-vc14hc45fdbb_0   anaconda [vc14]
        jpeg:         9b-hb83a4c4_2           --> 9b-vc14h4d7706e_1     anaconda [vc14]
        libiconv:     1.15-h1df5818_7         --> 1.15-vc14h29686d3_5   anaconda [vc14]
        libpng:       1.6.34-h79bbb47_0       --> 1.6.32-vc14h5163883_3 anaconda [vc14]
        libssh2:      1.8.0-hd619d38_4        --> 1.8.0-vc14hcf584a9_2  anaconda [vc14]
        libtiff:      4.0.9-h0f13578_0        --> 4.0.8-vc14h04e2a1e_10 anaconda [vc14]
        libxml2:      2.9.7-h79bbb47_0        --> 2.9.4-vc14h8fd0f11_5  anaconda [vc14]
        libxslt:      1.1.32-hf6f1972_0       --> 1.1.29-vc14hf85b8d4_5 anaconda [vc14]
        lxml:         4.2.1-py36heafd4d3_0    --> 4.1.1-py36he0adb16_0  anaconda
        lzo:          2.10-h6df0209_2         --> 2.10-vc14h0a64fa6_1   anaconda [vc14]
        openssl:      1.0.2n-h74b6da3_0       --> 1.0.2l-vc14hf4c37d5_5 anaconda [vc14]
        pillow:       5.0.0-py36h0738816_0    --> 4.2.1-py36hdb25ab2_0  anaconda
        py-xgboost:   0.71-py36h6538335_0     --> 0.71-py36h6538335_0   anaconda
        pycurl:       7.43.0.1-py36h74b6da3_0 --> 7.43.0-py36h086bf4c_3 anaconda
        pyopenssl:    17.5.0-py36h5b7d817_0   --> 17.4.0-py36h3316aad_0 anaconda
        qt:           5.6.2-vc14h6f8c307_12   --> 5.6.2-vc14h6f8c307_12 anaconda [vc14]
        sqlite:       3.22.0-h9d3ae62_0       --> 3.20.1-vc14h7ce8c62_1 anaconda [vc14]
        tk:           8.6.7-hcb92d03_3        --> 8.6.7-vc14hb68737d_1  anaconda [vc14]
        yaml:         0.1.7-hc54c509_2        --> 0.1.7-vc14hb31d195_1  anaconda [vc14]
        zlib:         1.2.11-h8395fce_2       --> 1.2.11-vc14h1cdd9ab_1 anaconda [vc14]
    
    Proceed ([y]/n)?
    

    我输入了y,回车并安装了模块。我没有复制结果,但它表示成功 - 但是当我尝试在笔记本中导入时没有找到模块。

    以下是我今天再次采取这些步骤的结果:

    (C:\Users\karls\Anaconda2) C:\Users\karls>activate py36
    
    (py36) C:\Users\karls>conda install -c anaconda py-xgboost
    Fetching package metadata ...............
    Solving package specifications: .
    
    # All requested packages already installed.
    # packages in environment at C:\Users\karls\Anaconda2\envs\py36:
    #
    py-xgboost                0.71             py36h6538335_0    anaconda
    
    (py36) C:\Users\karls>
    

    Anaconda2\envs\py36\Lib\site-packages\xgboost

    Anaconda2\envs\py36\Lib\site-packages\xgboost__pycache__

    编辑2 例2: XGBOOST 0.71 A

    XGBOOST 0.71 B

    XGBOOST 0.71 C

1 个答案:

答案 0 :(得分:1)

我在Windows 10 win-64上发现了一个安装过程似乎在jupyter笔记本中使用Anaconda 4.3 for python 3.6.4。下面我说明我遵循的过程。在底部,我包括已安装文件夹和文件的几个屏幕截图。如果您对如何改进此流程有任何建议,请告诉我们。

此过程改编自http://adataanalyst.com/machine-learning/installing-xgboost-for-windows-10/的说明,而http://stackoverflow.com/questions/33749735/how-to-install-xgboost-package-in-python-windows-platform的说明则来自http://sourceforge.net/projects/mingw-w64/

PREP

  1. 如果你没有git,请安装它并将其添加到你的路径中。

  2. 作为之前尝试安装xgboost的一部分,我最近更新了numpy和scipy到最新版本

  3. 下载并安装MinGW-64:xgboost installed folder files

    一个。在设置对话框中,将架构设置为“x86_64”(是i686),将线程设置为“win32”(是posix)

    湾我将MinGW-64安装到C:\ Program Files中的默认文件路径,所以我将C:\ Program Files \ mingw-w64 \ x86_64-8.1.0-win32-seh-rt_v6-rev0 \ mingw64 \ bin添加到我的PATH环境变量

    ℃。安装完成后,按照建议我转到mingw64\bin文件夹并将mingw32-make重命名为make

    • 实际上,我制作了mingw32-make副本,并将副本命名为make

    • 这样做可能是我下面遇到的一些问题的根源,尽管我能够克服它们。我建议你尝试重命名文件,而不是像我一样留下同名文件的两个副本

  4. 获取XGBOOST源代码

    1. 启动Windows命令提示符:开始| Windows系统|命令提示符

      • 这些步骤也可以在MINGW64中使用,我稍后会切换到这里,但在这里我会尽力记录我按照我的指示采取的步骤。

      一个。输入cd c:\,其中c:\表示您要安装xgboost的位置。对我来说是C:\...\Anaconda2\envs\py36\Lib\site-packages

      湾输入git clone --recursive https://github.com/dmlc/xgboost

      • 在显示下一步的提示
      • 之前,这将运行并输出几十行输出

      ℃。输入cd xgboost

      d。输入git submodule init

      • 这不会产生任何输出并立即再次显示提示

      即输入git submodule update

      • 这不会产生任何输出并立即再次显示提示

      F。输入copy make\mingw64.mk config.mk

      • 输出:&#34;复制了1个文件。&#34;

      • 注意:到目前为止,所有命令都在Windows命令提示符下运行。下一个没有在那里工作,所以继续我切换到mingw64终端。我重新跑步&#34; f&#34;并继续下一步。

    2. 启动mingw64终端:开始| MinGW - W64项目|运行终端

      一个。输入cd C:\Users\karls\Anaconda2\envs\py36\Lib\site-packages\xgboost

      湾输入copy make\mingw64.mk config.mk

      ℃。输入make -j4

      • 此命令不起作用。我根据建议的Google搜索了几十种变体:make.exemakefilecmakepymakemake.pymingw64-make,{{1列表继续。},mingw64-make.exe,列表继续。没有任何效果。我尝试将目录更改为C:\Program Files\mingw-w64\x86_64-8.1.0-win32-seh-rt_v6-rev0\mingw64\bin\make内的其他文件夹。最后,虽然输出是可疑的,但我仍然按照以下内容进行操作。

      d。将目录更改为site-packages\xgboost

      即输入...\site-packages\xgboost\make

      • 这会弹出一个&#34;你想怎么打开这个文件?&#34;对话框,这是我见过的最有希望的输出。我没有打开文件。命令有用吗?我不知道,但我接下来的步骤。
    3. 安装PYTHON包装

      F。将目录更改为mingw64.mk -j4

      克。输入site-packages\xgboost\python-package

      • 输出数十行:运行,创建,写作,阅读和复制等。

      • 我还有几个&#34;警告:找不到匹配的文件...&#34;线。

      • 据推测,任何遗漏都是在更多写作,安装,运行,创建,复制,字节编译,删除,处理,提取,添加和搜索的后续行中处理的

      • 最后一行读取&#34; xgboost完成处理依赖关系== 0.71&#34;

      此时我能够在jupyter笔记本中导入和使用xgboost,所以我没有采取任何进一步的措施。但是,我所遵循的说明(上面链接)包括您可能需要的其他步骤。如果您在我的过程中发现任何错误,请告诉我,因为我仍然怀疑我的安装后期不易受到更新问题的影响(例如,该目录似乎包含多个位置的相同文件的副本)。

      以下是已安装目录的几个屏幕截图:

      xgboost installed files {{3}}