Xgboost: Erro ao instalar o xgboost

Criado em 10 jun. 2016  ·  19Comentários  ·  Fonte: dmlc/xgboost

Ei, estou tendo um erro ao tentar usar o cmd "make". Tentei os compiladores mingw-64 e TDM-GCC, mas não tive sorte. Aqui está o log de erros:

$ cp make / mingw64.mk config.mk; make -j4
g ++ -m64 -std = c ++ 0x -Wall -O3 -msse2 -Wno-unknown-pragmas -funroll-loops -Iinclude -DDMLC_ENABLE_STD_THREAD = 0 -Idmlc-core / include -Irabit / include -fopenmp -MM -MT build / c_api / c_api.o src / c_api / c_api.cc> build / c_api / c_api.d
g ++ -m64 -std = c ++ 0x -Wall -O3 -msse2 -Wno-unknown-pragmas -funroll-loops -Iinclude -DDMLC_ENABLE_STD_THREAD = 0 -Idmlc-core / include -Irabit / include -fopenmp -MM -MT build / c_api / c_api_error.o src / c_api / c_api_error.cc> build / c_api / c_api_error.d
g ++ -m64 -std = c ++ 0x -Wall -O3 -msse2 -Wno-unknown-pragmas -funroll-loops -Iinclude -DDMLC_ENABLE_STD_THREAD = 0 -Idmlc-core / include -Irabit / include -fopenmp -MM -MT build / data / sparse_page_raw_format.o src / data / sparse_page_raw_format.cc> build / data / sparse_page_raw_format.d
g ++ -m64 -std = c ++ 0x -Wall -O3 -msse2 -Wno-unknown-pragmas -funroll-loops -Iinclude -DDMLC_ENABLE_STD_THREAD = 0 -Idmlc-core / include -Irabit / include -fopenmp -MM -MT build / data / simple_dmatrix.o src / data / simple_dmatrix.cc> build / data / simple_dmatrix.d
g ++ -m64 -c -std = c ++ 0x -Wall -O3 -msse2 -Wno-unknown-pragmas -funroll-loops -Iinclude -DDMLC_ENABLE_STD_THREAD = 0 -Idmlc-core / include -Irabit / include -fopenmp -c src / c_api / c_api.cc -o build / c_api / c_api.o
g ++ -m64 -c -std = c ++ 0x -Wall -O3 -msse2 -Wno-unknown-pragmas -funroll-loops -Iinclude -DDMLC_ENABLE_STD_THREAD = 0 -Idmlc-core / include -Irabit / include -fopenmp -c src / data / sparse_page_raw_format.cc -o build / data / sparse_page_raw_format.o
g ++ -m64 -c -std = c ++ 0x -Wall -O3 -msse2 -Wno-unknown-pragmas -funroll-loops -Iinclude -DDMLC_ENABLE_STD_THREAD = 0 -Idmlc-core / include -Irabit / include -fopenmp -c src / c_api / c_api_error.cc -o build / c_api / c_api_error.o
g ++ -m64 -c -std = c ++ 0x -Wall -O3 -msse2 -Wno-unknown-pragmas -funroll-loops -Iinclude -DDMLC_ENABLE_STD_THREAD = 0 -Idmlc-core / include -Irabit / include -fopenmp -c src / data / simple_dmatrix.cc -o build / data / simple_dmatrix.o
No arquivo incluído em C: /TDM-GCC-64/x86_64-w64-mingw32/include/locale.h: 12: 0,
de C: /TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / clocale: 42 ,
de C: /TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / x86_64-w64-mingw32 / bits / c ++ locale.h: 41,
de C: /TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / bits / localefwd.h: 40,
de C: /TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / string: 43 ,
de dmlc-core / include / dmlc / base.h: 154,
de include / xgboost / data.h: 10,
de src / data / simple_dmatrix.cc: 7:
C: /TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h: 450: 83: erro: 'FILE * std :: fopen (const char_, const char_)' deveria ter sido declarado dentro de 'std'
ARQUIVO _fopen64 (const char * nome do arquivo restrito , const char * modo restrito );
^
C: /TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h: 450: 83: erro: 'FILE_ std :: fopen (const char_, const char_)' entra em conflito com uma declaração anterior
C: /TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h: 449: 17: observação: declaração anterior 'FILE * fopen (const char_, const char_)'
ARQUIVO _ cdecl fopen (const char * __restrict _Filename, const char * __restrict__ _Mode) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
^
No arquivo incluído em C: /TDM-GCC-64/x86_64-w64-mingw32/include/locale.h: 12: 0,
de C: /TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / clocale: 42 ,
de C: /TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / x86_64-w64-mingw32 / bits / c ++ locale.h: 41,
de C: /TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / bits / localefwd.h: 40,
de C: /TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / string: 43 ,
de dmlc-core / include / dmlc / base.h: 154,
de include / xgboost / data.h: 10,
de src / data / sparse_page_raw_format.cc: 6:
C: /TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h: 450: 83: erro: 'FILE_ std :: fopen (const char_, const char_)' deveria ter sido declarado dentro de 'std'
ARQUIVO _fopen64 (const char * nome do arquivo restrito , const char * modo restrito );
^
C: /TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h: 450: 83: erro: 'FILE_ std :: fopen (const char_, const char_)' entra em conflito com uma declaração anterior
C: /TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h: 449: 17: observação: declaração anterior 'FILE * fopen (const char_, const char_)'
ARQUIVO _ cdecl fopen (const char * __restrict _Filename, const char * __restrict__ _Mode) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
^
No arquivo incluído em C: /TDM-GCC-64/x86_64-w64-mingw32/include/locale.h: 12: 0,
de C: /TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / clocale: 42 ,
de C: /TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / x86_64-w64-mingw32 / bits / c ++ locale.h: 41,
de C: /TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / bits / localefwd.h: 40,
de C: /TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / string: 43 ,
de dmlc-core / include / dmlc / base.h: 154,
de src / c_api /./ c_api_error.h: 9,
de src / c_api / c_api_error.cc: 6:
C: /TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h: 450: 83: erro: 'FILE_ std :: fopen (const char_, const char_)' deveria ter sido declarado dentro de 'std'
ARQUIVO _fopen64 (const char * nome do arquivo restrito , const char * modo restrito );
^
C: /TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h: 450: 83: erro: 'FILE_ std :: fopen (const char_, const char_)' entra em conflito com uma declaração anterior
C: /TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h: 449: 17: observação: declaração anterior 'FILE * fopen (const char_, const char_)'
ARQUIVO _ cdecl fopen (const char * __restrict _Filename, const char * __restrict__ _Mode) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
^
No arquivo incluído em C: /TDM-GCC-64/x86_64-w64-mingw32/include/locale.h: 12: 0,
de C: /TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / clocale: 42 ,
de C: /TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / x86_64-w64-mingw32 / bits / c ++ locale.h: 41,
de C: /TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / bits / localefwd.h: 40,
de C: /TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / string: 43 ,
de dmlc-core / include / dmlc / base.h: 154,
de include / xgboost / data.h: 10,
de src / c_api / c_api.cc: 3:
C: /TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h: 450: 83: erro: 'FILE_ std :: fopen (const char_, const char_)' deveria ter sido declarado dentro de 'std'
ARQUIVO _fopen64 (const char * nome do arquivo restrito , const char * modo restrito );
^
C: /TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h: 450: 83: erro: 'FILE_ std :: fopen (const char_, const char_)' entra em conflito com uma declaração anterior
C: /TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h: 449: 17: observação: declaração anterior 'FILE * fopen (const char_, const char_)'
ARQUIVO _ cdecl fopen (const char * __restrict _Filename, const char * __restrict__ _Mode) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
^
Makefile: 97 : a receita para o destino 'build / c_api / c_api_error.o' falhou
mingw32-make: _ * [build / c_api / c_api_error.o] Erro 1mingw32-make: * Aguardando trabalhos inacabados ....Makefile: 97 : a receita para o destino 'build / data / simple_dmatrix.o' falhoumingw32-make: * * [build / data / simple_dmatrix.o] Erro 1
No arquivo incluído em dmlc-core / include / dmlc / data.h: 16: 0,
de include / xgboost / data.h: 11,
de src / data / sparse_page_raw_format.cc: 6:
dmlc-core / include / dmlc /./ registry.h: 218: 22: aviso: 'xgboost :: data :: make_SparsePageFormat_raw *' definido, mas não usado [-Wunused-variable]static EntryType & __make_ ## EntryTypeName ## _ ## Name ## __ =^src / data /./ sparse_batch_page.h: 250: 3: observação: na expansão da macro 'DMLC_REGISTRY_REGISTER'DMLC_REGISTRY_REGISTER (:: xgboost :: data :: SparsePageFormatReg, SparsePageFormat, Name)^src / data / sparse_page_raw_format.cc: 93: 1: nota: na expansão da macro 'XGBOOST_REGISTER_SPARSE_PAGE_FORMAT'XGBOOST_REGISTER_SPARSE_PAGE_FORMAT (bruto)^Makefile: 97 : a receita para o destino 'build / data / sparse_page_raw_format.o' falhoumingw32-make: * * [build / data / sparse_page_raw_format.o] Erro 1
src / c_api / c_api.cc: 739: 12: aviso: 'XGBOOST_LINK_RABIT_C_API_' definido, mas não usado [-variável-Wunused]
estático int XGBOOST_LINK_RABIT_C_API_ = RabitLinkTag ();
^
Makefile: 97 : a receita para o destino 'build / c_api / c_api.o' falhou
mingw32-make: *** [build / c_api / c_api.o] Erro 1

Comentários muito úteis

@ziqilau @tqchen @JasonTianCHD @yanqingmen
Corrigido, basta clonar o repo e, em seguida, checkout para 9a48a40 até que eles consertem, algo nos últimos commits deve ter bagunçado a compilação:

git clone --recursive https://github.com/dmlc/xgboost
cd xgboost
git checkout 9a48a40
git submodule init
git submodule update

Saúde!

Todos 19 comentários

Eu tenho o mesmo problema!!

Eu tenho o mesmo problema.

mesmo aqui!

mesmo.......

O Windows não é realmente uma boa escolha para fazer ml.

@ziqilau @tqchen @JasonTianCHD @yanqingmen
Corrigido, basta clonar o repo e, em seguida, checkout para 9a48a40 até que eles consertem, algo nos últimos commits deve ter bagunçado a compilação:

git clone --recursive https://github.com/dmlc/xgboost
cd xgboost
git checkout 9a48a40
git submodule init
git submodule update

Saúde!

Posso confirmar que isso funciona por enquanto. Muito obrigado!

Sim, depois de 2 dias de bagunça, a correção de Cortajarena funcionou! Muito obrigado!!

Te agradece !! @Cortajarena

Obrigado @Cortajarena !

Obrigado @Cortajarena - você salvou meu dia! :-)

Obrigado @Cortajarena!

_No entanto, quando importei xgboost no jupyter nootbook, _

importar os
mingw_path = "C: TDM-GCC-64bin"
os.environ ['PATH'] = mingw_path + ';' + os.environ ['PATH']
importar xgboost como xgb

_Eu recebi mensagem de erro: _

OSError Traceback (última chamada mais recente)
no()
----> 1 importar xgboost como xgb

C: UsersLAnaconda3libsite-packagesxgboost-0.4-py3.5.eggxgboost__init __. Py em()
9 import os
10
---> 11 de .core import DMatrix, Booster
12 do trem de importação de treinamento, cv
13 de. import rabit # noqa

C: UsersLAnaconda3libsite-packagesxgboost-0.4-py3.5.eggxgboostcore.py em()
110
111 # carregue a biblioteca XGBoost globalmente
-> 112 _LIB = _load_lib ()
113
114

C: UsersLAnaconda3libsite-packagesxgboost-0.4-py3.5.eggxgboostcore.py em _load_lib ()
104 se len (lib_path) == 0:
105 retornar Nenhum
-> 106 lib = ctypes.cdll.LoadLibrary (lib_path [0])
107 lib.XGBGetLastError.restype = ctypes.c_char_p
108 return lib

C: UsersLAnaconda3libctypes__init __. Py em LoadLibrary (self, name)
423
424 def LoadLibrary (próprio, nome):
-> 425 return self._dlltype (nome)
426
427 cdll = LibraryLoader (CDLL)

C: UsersLAnaconda3libctypes__init __. Py em init (self, name, mode, handle, use_errno, use_last_error)
345
346 se o identificador for Nenhum:
-> 347 self._handle = _dlopen (self._name, modo)
348 mais:
349 self._handle = handle

OSError: [WinError 1114] Uma rotina de inicialização da biblioteca de vínculo dinâmico (DLL) falhou.

Alguém teve o mesmo problema? Como corrigi-lo?

Obrigado @Cortajarena pela dica!
Alguém está recebendo um erro subsequente de que a "Biblioteca XGBoost não pode ser encontrada no caminho do candidato"?
Estou usando o Anaconda 4.0.0 com Python 3.5.1 no Windows7.
Os seguintes comandos funcionaram bem:

git clone --recursive https://github.com/dmlc/xgboost
cd xgboost
git checkout 9a48a40
git submodule init
git submodule update

Quando voltei para o Prompt do Anaconda, redirecionei para a pasta python-packages e tentei:

python setup.py install

Recebi o erro de que a biblioteca não foi encontrada e fornece uma lista de candidatos.
Idéias sobre como consertar?

@lrvenable

Depois de seguir as etapas nomeadas, digite:

cd python-package

Você estará dentro do diretório do pacote python (dentro da pasta xgboost do repo que você já clonou).
Em seguida, digite o seguinte no console:

python setup.py install

Certifique-se de usar o bit bash em vez do prompt de comando do Windows!
Saúde!

@Cortajarena você é um salvador absoluto. muitíssimo obrigado!

que corrigiu o problema para mim (Win7 64Bit, mingw-w64):

... dmlc-coreincludedmlcbase.h linha 110 ++ (commit https://github.com/dmlc/xgboost/commit/75d9be55de7e13a0075b4422c37a74f7b39600b1)

se! definido ( GNUC )

define fopen64 std :: fopen NOTA: remova "std ::"

fim se

if (definido MINGW32 ) || (definido MINGW64 )

define fopen64 std :: fopen NOTA: remova "std ::"

fim se

=>

se! definido ( GNUC )

definir fopen64 fopen

fim se

if (definido MINGW32 ) || (definido MINGW64 )

definir fopen64 fopen

fim se

O problema do upstream foi corrigido e a referência ao dmlc-core foi atualizada em 1408. Eu sugeriria que alguém feche este problema, para que as pessoas não continuem instalando a versão de 5 de junho do código.

Eu estava compilando o pacote R no Windows 7. O pacote xgboost mais recente do CRAN não foi compilado.

A solução de @Far0n funcionou para mim.

@Cortajarena @lrvenable

entendo

 $ python setup.py install
 Traceback (most recent call last):
   File "setup.py", line 19, in <module>
     LIB_PATH = libpath['find_lib_path']()
   File "xgboost/libpath.py", line 45, in find_lib_path
     'List of candidates:\n' + ('\n'.join(dll_path)))
 XGBoostLibraryNotFound: Cannot find XGBoost Libarary in the candicate path, did you install compilers and run build.sh in root path?
 List of candidates:
 ~/xgboost/xgboost/python-package/xgboost/libxgboost.so
 ~/xgboost/xgboost/python-package/xgboost/../../lib/libxgboost.so
 ~/xgboost/xgboost/python-package/xgboost/./lib/libxgboost.so
Esta página foi útil?
0 / 5 - 0 avaliações