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

Kar*_*ker 5 python python-3.x anaconda windows-10 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关于kaggle的ML简介!

版本:

 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`
Run Code Online (Sandbox Code Playgroud)

追溯:

---------------------------------------------------------------------------
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
Run Code Online (Sandbox Code Playgroud)

编辑1 安装尝试

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

  1. 启动Anaconda提示
  2. 激活py36
  3. 运行conda install -c anaconda py-xgboost

这是几天前我尝试进行此安装时的命令窗口结果(当我今天跟踪这些步骤时,在“已安装所有请求的软件包”确认下):

(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)?
Run Code Online (Sandbox Code Playgroud)

我输入y,输入Enter,模块已安装。我没有复制结果,但是它表示成功-但是,当我尝试将其导入笔记本时找不到该插针。

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

(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>
Run Code Online (Sandbox Code Playgroud)

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

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

编辑2示例2: XGBOOST 0.71 A

XGBOOST 0.71乙

XGBOOST 0.71摄氏度

Kar*_*ker 1

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

\n\n

此过程改编自http://adataanalyst.com/machine-learning/installing-xgboost-for-windows-10/上的说明,而这些说明又源自http://stackoverflow.com/questions/33749735/how-to -install-xgboost-package-in-python-windows-platform

\n\n

准备工作

\n\n
    \n
  1. 如果您没有 \xe2\x80\x99t 有 git,请安装它并将其添加到您的 PATH 中。

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

  4. \n
  5. 下载并安装 MinGW-64:http://sourceforge.net/projects/mingw-w64/

    \n\n

    A。在“设置”对话框中,将“体系结构”设置为 \xe2\x80\x9cx86_64\xe2\x80\x9d(为 i686),将“线程”设置为 \xe2\x80\x9cwin32\xe2\x80\x9d(为 posix)

    \n\n

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

    \n\n

    C。安装完成后,按照建议我进入该mingw64\\bin文件夹并将其重命名mingw32-makemake

    \n\n
      \n
    • 实际上,我制作了一个副本mingw32-make命名了该副本make

    • \n
    • 这样做可能是我下面一些麻烦的根源,尽管我能够克服它们。我建议您尝试重命名该文件,而不是像我一样保留同一文件的两个副本使用不同的名称

    • \n
  6. \n
\n\n

获取 XGBoost 源代码

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

    \n\n
      \n
    • 这些步骤也可能适用于 MINGW64,我稍后会切换到 MINGW64,但在这里我尝试忠实地记录我按照指示执行的步骤)
    • \n
    \n\n

    A。输入cd c:\\wherec:\\代表您要安装 xgboost 的位置。对我来说是C:\\...\\Anaconda2\\envs\\py36\\Lib\\site-packages

    \n\n

    b. 进入git clone --recursive https://github.com/dmlc/xgboost

    \n\n
      \n
    • 这将运行并输出几十行输出,然后显示下一步的提示
    • \n
    \n\n

    C。进入cd xgboost

    \n\n

    d. 进入git submodule init

    \n\n
      \n
    • 这没有产生任何输出并立即再次显示提示
    • \n
    \n\n

    e. 进入git submodule update

    \n\n
      \n
    • 这没有产生任何输出并立即再次显示提示
    • \n
    \n\n

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

    \n\n
      \n
    • 输出:“已复制 1 个文件。”

    • \n
    • 注意:到目前为止,所有命令都是在 Windows 命令提示符下运行的。下一个在那里不起作用,所以接下来我切换到 mingw64 终端。我重新运行步骤“f”并继续下一步。

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

    \n\n

    A。进入cd C:\\Users\\karls\\Anaconda2\\envs\\py36\\Lib\\site-packages\\xgboost

    \n\n

    b. 进入copy make\\mingw64.mk config.mk

    \n\n

    C。进入make -j4

    \n\n
      \n
    • 该命令不起作用。我根据谷歌搜索的建议尝试了几十种变体:,,,,,,,,,,,这样的例子make.exe不胜枚举。什么都没起作用。我尝试将目录更改为. 最后,尽管输出是可疑的,但我偶然发现了以下内容并能够继续。makefilecmakepymakemake.pymingw64-makemingw64-make.exeC:\\Program Files\\mingw-w64\\x86_64-8.1.0-win32-seh-rt_v6-rev0\\mingw64\\bin\\makesite-packages\\xgboost
    • \n
    \n\n

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

    \n\n

    e. 进入mingw64.mk -j4

    \n\n
      \n
    • 这会弹出“您想如何打开此文件?” 对话框,这是我见过的最有希望的输出。我没有打开该文件。这个命令有什么好处吗?我不知道,但我继续进行下一步。
    • \n
  4. \n
\n\n

安装Python包

\n\n

F。将目录更改为site-packages\\xgboost\\python-package

\n\n

G。进入python setup.py install

\n\n
    \n
  • 这会输出几十行:运行这个、创建那个、写入、读取和复制等等。

  • \n
  • 我还有几行“警告:没有找到匹配的文件......”行。

  • \n
  • 想必任何遗漏的内容都在接下来的更多编写、安装、运行、创建、复制、字节编译、删除、处理、提取、添加和搜索中处理

  • \n
  • 最后一行显示“已完成 xgboost==0.71 的处理依赖项”

  • \n
\n\n

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

\n\n

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

\n\n

xgboost安装文件夹文件\nxgboost安装文件

\n