Xgboost: Kesalahan menginstal xgboost

Dibuat pada 10 Jun 2016  ·  19Komentar  ·  Sumber: dmlc/xgboost

Hai, saya mengalami kesalahan saat mencoba menggunakan cmd "make". Saya sudah mencoba mingw-64 dan juga kompiler TDM-GCC tetapi tidak berhasil. Berikut log kesalahannya:

$cp make/mingw64.mk config.mk; buat -j4
g++ -m64 -std=c++0x -Wall -O3 -msse2 -Wno-unknown-pragmas -funroll-loop -Termasuk -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-loop -Termasuk -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-loop -Termasuk -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-loop -Termasuk -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-loop -Termasuk -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-loop -Termasuk -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-loop -Termasuk -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-loop -Termasuk -DDMLC_ENABLE_STD_THREAD=0 -Idmlc-core/include -Irabit/include -fopenmp -c src/ data/simple_dmatrix.cc -o build/data/simple_dmatrix.o
Dalam file yang disertakan dari C:/TDM-GCC-64/x86_64-w64-mingw32/include/locale.h:12:0,
dari C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/ clocale:42 ,
dari C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/x86_64-w64-mingw32/bits/c++locale.h:41,
dari C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/bits/localefwd.h:40,
dari C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/ string:43 ,
dari dmlc-core/include/dmlc/base.h:154,
dari include/xgboost/data.h:10,
dari src/data/simple_dmatrix.cc:7:
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:450:83: error: 'FILE* std::fopen(const char_, const char_)' seharusnya dideklarasikan di dalam 'std'
FILE _fopen64(const char * batasi nama file,const char * batasi mode);
^
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:450:83: error: 'FILE_ std::fopen(const char_, const char_)' bertentangan dengan deklarasi sebelumnya
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:449:17: catatan: deklarasi sebelumnya 'FILE* fopen(const char_, const char_)'
FILE _ cdecl fopen(const char * __restrict _Filename,const char * __restrict__ _Mode) __MINGW_ATTRIB_DEPRECATE_SEC_WARN;
^
Dalam file yang disertakan dari C:/TDM-GCC-64/x86_64-w64-mingw32/include/locale.h:12:0,
dari C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/ clocale:42 ,
dari C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/x86_64-w64-mingw32/bits/c++locale.h:41,
dari C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/bits/localefwd.h:40,
dari C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/ string:43 ,
dari dmlc-core/include/dmlc/base.h:154,
dari include/xgboost/data.h:10,
dari src/data/sparse_page_raw_format.cc:6:
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:450:83: error: 'FILE_ std::fopen(const char_, const char_)' seharusnya dideklarasikan di dalam 'std'
FILE _fopen64(const char * batasi nama file,const char * batasi mode);
^
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:450:83: error: 'FILE_ std::fopen(const char_, const char_)' bertentangan dengan deklarasi sebelumnya
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:449:17: catatan: deklarasi sebelumnya 'FILE* fopen(const char_, const char_)'
FILE _ cdecl fopen(const char * __restrict _Filename,const char * __restrict__ _Mode) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
^
Dalam file yang disertakan dari C:/TDM-GCC-64/x86_64-w64-mingw32/include/locale.h:12:0,
dari C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/ clocale:42 ,
dari C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/x86_64-w64-mingw32/bits/c++locale.h:41,
dari C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/bits/localefwd.h:40,
dari C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/ string:43 ,
dari dmlc-core/include/dmlc/base.h:154,
dari src/c_api/./c_api_error.h:9,
dari src/c_api/c_api_error.cc:6:
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:450:83: error: 'FILE_ std::fopen(const char_, const char_)' seharusnya dideklarasikan di dalam 'std'
FILE _fopen64(const char * batasi nama file,const char * batasi mode);
^
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:450:83: error: 'FILE_ std::fopen(const char_, const char_)' bertentangan dengan deklarasi sebelumnya
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:449:17: catatan: deklarasi sebelumnya 'FILE* fopen(const char_, const char_)'
FILE _ cdecl fopen(const char * __restrict _Filename,const char * __restrict__ _Mode) __MINGW_ATTRIB_DEPRECATE_SEC_WARN;
^
Dalam file yang disertakan dari C:/TDM-GCC-64/x86_64-w64-mingw32/include/locale.h:12:0,
dari C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/ clocale:42 ,
dari C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/x86_64-w64-mingw32/bits/c++locale.h:41,
dari C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/bits/localefwd.h:40,
dari C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/ string:43 ,
dari dmlc-core/include/dmlc/base.h:154,
dari include/xgboost/data.h:10,
dari src/c_api/c_api.cc:3:
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:450:83: error: 'FILE_ std::fopen(const char_, const char_)' seharusnya dideklarasikan di dalam 'std'
FILE _fopen64(const char * batasi nama file,const char * batasi mode);
^
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:450:83: error: 'FILE_ std::fopen(const char_, const char_)' bertentangan dengan deklarasi sebelumnya
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:449:17: catatan: deklarasi sebelumnya 'FILE* fopen(const char_, const char_)'
FILE _ cdecl fopen(const char * __restrict _Filename,const char * __restrict__ _Mode) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
^
Makefile:97 : resep untuk target 'build/c_api/c_api_error.o' gagal
mingw32-make: _* [build/c_api/c_api_error.o] Kesalahan 1mingw32-make: * Menunggu pekerjaan yang belum selesai....Makefile:97 : resep untuk target 'build/data/simple_dmatrix.o' gagalmingw32-make: * * [build/data/simple_dmatrix.o] Kesalahan 1
Dalam file yang disertakan dari dmlc-core/include/dmlc/data.h:16:0,
dari include/xgboost/data.h:11,
dari src/data/sparse_page_raw_format.cc:6:
dmlc-core/include/dmlc/./registry.h:218:22: warning: 'xgboost::data::make_SparsePageFormat_raw *' didefinisikan tetapi tidak digunakan [-Wunused-variable]static EntryType & __make_ ## EntryTypeName ## _ ## Nama ## __ =^src/data/./sparse_batch_page.h:250:3: catatan: dalam perluasan makro 'DMLC_REGISTRY_REGISTER'DMLC_REGISTRY_REGISTER(::xgboost::data::SparsePageFormatReg, SparsePageFormat, Nama)^src/data/sparse_page_raw_format.cc:93:1: catatan: dalam perluasan makro 'XGBOOST_REGISTER_SPARSE_PAGE_FORMAT'XGBOOST_REGISTER_SPARSE_PAGE_FORMAT(mentah)^Makefile:97 : resep untuk target 'build/data/sparse_page_raw_format.o' gagalmingw32-make: * * [build/data/sparse_page_raw_format.o] Kesalahan 1
src/c_api/c_api.cc:739:12: peringatan: 'XGBOOST_LINK_RABIT_C_API_' didefinisikan tetapi tidak digunakan [-Wunused-variable]
static int XGBOOST_LINK_RABIT_C_API_ = RabitLinkTag();
^
Makefile:97 : resep untuk target 'build/c_api/c_api.o' gagal
mingw32-make: *** [build/c_api/c_api.o] Kesalahan 1

Komentar yang paling membantu

@ziqilau @tqchen @JasonTianCHD @yanqingmen
Diperbaiki, cukup klon repo dan kemudian checkout ke 9a48a40 sampai mereka memperbaikinya, sesuatu di komit terakhir pasti mengacaukan kompilasi:

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

Bersulang!

Semua 19 komentar

Saya memiliki masalah yang sama!!

Saya memiliki masalah yang sama.

sama disini!

sama.......

Windows benar-benar bukan pilihan yang baik untuk melakukan ml.

@ziqilau @tqchen @JasonTianCHD @yanqingmen
Diperbaiki, cukup klon repo dan kemudian checkout ke 9a48a40 sampai mereka memperbaikinya, sesuatu di komit terakhir pasti mengacaukan kompilasi:

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

Bersulang!

Saya dapat mengonfirmasi bahwa ini berfungsi untuk saat ini. Terima kasih banyak!

Ya, setelah 2 hari bermain-main, perbaikan dari Cortajarena berhasil! Terima kasih banyak!!

Terimakasih !! @Cortajarena

Terima kasih @Cortajarena !

Terima kasih @Cortajarena - Anda menyelamatkan hari saya! :-)

Terima kasih @Cortajarena!

_Namun, ketika saya mengimpor xgboost di jupyter nootbook,_

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

_Saya mendapat pesan kesalahan:_

OSError Traceback (panggilan terakhir terakhir)
di dalam()
----> 1 impor xgboost sebagai xgb

C:UsersLAnaconda3libsite-packagesxgboost-0.4-py3.5.eggxgboost__init__.py di()
9 os impor
10
---> 11 dari .core impor DMatrix, Booster
12 dari .training import train, cv
13 dari . impor rabit #noqa

C:UsersLAnaconda3libsite-packagesxgboost-0.4-py3.5.eggxgboostcore.py di()
110
111 # memuat pustaka XGBoost secara global
--> 112 _LIB = _load_lib()
113
114

C:UsersLAnaconda3libsite-packagesxgboost-0.4-py3.5.eggxgboostcore.py di _load_lib()
104 jika len(lib_path) == 0:
105 kembali Tidak ada
-> 106 lib = ctypes.cdll.LoadLibrary(lib_path[0])
107 lib.XGBGetLastError.restype = ctypes.c_char_p
108 kembali lib

C:UsersLAnaconda3libctypes__init__.py di LoadLibrary(sendiri, nama)
423
424 def LoadLibrary(sendiri, nama):
-> 425 mengembalikan self._dlltype(nama)
426
427 cdll = LibraryLoader(CDLL)

C:UsersLAnaconda3libctypes__init__.py di init (self, name, mode, handle, use_errno, use_last_error)
345
346 jika pegangan Tidak Ada:
--> 347 self._handle = _dlopen(self._name, mode)
348 lainnya:
349 self._handle = menangani

OSError: [WinError 1114] Rutin inisialisasi dynamic link library (DLL) gagal.

Ada yang punya masalah yang sama? Bagaimana memperbaikinya?

Terima kasih @Cortajarena atas tipnya!
Apakah ada orang lain yang mendapatkan kesalahan berikutnya bahwa "Perpustakaan XGBoost tidak dapat ditemukan di jalur kandidat"?
Saya menggunakan Anaconda 4.0.0 dengan Python 3.5.1 di Windows7.
Perintah berikut bekerja dengan baik:

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

Ketika saya beralih kembali ke Anaconda Prompt, dialihkan ke folder python-packages dan mencoba:

python setup.py install

Saya menerima kesalahan bahwa perpustakaan tidak dapat ditemukan dan menyediakan daftar kandidat.
Gagasan tentang cara memperbaikinya?

@lrvenable

Setelah melakukan langkah-langkah yang Anda beri nama, ketik:

cd python-package

Anda kemudian akan berada di dalam direktori paket python (di dalam folder xgboost dari repo yang telah Anda kloning).
Kemudian ketik ini di konsol:

python setup.py install

Pastikan untuk menggunakan bit bash alih-alih command prompt windows!
Bersulang!

@Cortajarena Anda adalah penyelamat mutlak. banyak, banyak terima kasih!

yang memperbaiki masalah bagi saya (Win7 64Bit, mingw-w64):

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

jika !didefinisikan( GNUC )

tentukan fopen64 std:: fopen CATATAN: hapus "std::"

berakhir jika

if (didefinisikan mingw32 ) || (didefinisikan MINGW64 )

tentukan fopen64 std:: fopen CATATAN: hapus "std::"

berakhir jika

=>

jika !didefinisikan( GNUC )

tentukan fopen64 fopen

berakhir jika

if (didefinisikan mingw32 ) || (didefinisikan MINGW64 )

tentukan fopen64 fopen

berakhir jika

Masalah hulu telah diperbaiki dan referensi ke dmlc-core telah diperbarui #1408 . Saya menyarankan seseorang untuk menutup masalah ini, sehingga orang tidak terus menginstal kode versi 5 Juni.

Saya sedang membangun paket R di Windows 7. Paket xgboost terbaru dari CRAN tidak dibuat.

Solusi @ Far0n bekerja untuk saya.

@Cortajarena @lrvenable

saya mengerti

 $ 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
Apakah halaman ini membantu?
0 / 5 - 0 peringkat