Xgboost: Fehler bei der Installation von xgboost

Erstellt am 10. Juni 2016  ·  19Kommentare  ·  Quelle: dmlc/xgboost

Hey, ich habe einen Fehler beim Versuch, das "make"-Cmd zu verwenden. Ich habe sowohl mingw-64 als auch die TDM-GCC-Compiler ausprobiert, aber kein Glück. Hier ist das Fehlerprotokoll:

$ cp make/mingw64.mk config.mk; mache -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
In Datei enthalten von C:/TDM-GCC-64/x86_64-w64-mingw32/include/locale.h:12:0,
aus C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/ clocale:42 ,
aus C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/x86_64-w64-mingw32/bits/c++locale.h:41,
aus C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/bits/localefwd.h:40,
aus C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/ string:43 ,
von dmlc-core/include/dmlc/base.h:154,
von include/xgboost/data.h:10,
aus 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_)' sollte in 'std' deklariert worden sein
DATEI _fopen64(const char * Dateinamen einschränken ,const char * Modus einschränken );
^
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:450:83: Fehler: 'FILE_ std::fopen(const char_, const char_)' kollidiert mit einer vorherigen Deklaration
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:449:17: Hinweis: vorherige Deklaration 'FILE* fopen(const char_, const char_)'
FILE _ cdecl fopen(const char * __restrict _Filename,const char * __restrict__ _Mode) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
^
In Datei enthalten von C:/TDM-GCC-64/x86_64-w64-mingw32/include/locale.h:12:0,
aus C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/ clocale:42 ,
aus C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/x86_64-w64-mingw32/bits/c++locale.h:41,
aus C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/bits/localefwd.h:40,
aus C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/ string:43 ,
von dmlc-core/include/dmlc/base.h:154,
von include/xgboost/data.h:10,
von src/data/sparse_page_raw_format.cc:6:
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:450:83: Fehler: 'FILE_ std::fopen(const char_, const char_)' sollte in 'std' deklariert worden sein
DATEI _fopen64(const char * Dateinamen einschränken , const char * Modus einschränken );
^
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:450:83: Fehler: 'FILE_ std::fopen(const char_, const char_)' kollidiert mit einer vorherigen Deklaration
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:449:17: Hinweis: vorherige Deklaration 'FILE* fopen(const char_, const char_)'
FILE _ cdecl fopen(const char * __restrict _Filename,const char * __restrict__ _Mode) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
^
In Datei enthalten von C:/TDM-GCC-64/x86_64-w64-mingw32/include/locale.h:12:0,
aus C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/ clocale:42 ,
aus C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/x86_64-w64-mingw32/bits/c++locale.h:41,
aus C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/bits/localefwd.h:40,
aus C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/ string:43 ,
von dmlc-core/include/dmlc/base.h:154,
von src/c_api/./c_api_error.h:9,
von src/c_api/c_api_error.cc:6:
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:450:83: Fehler: 'FILE_ std::fopen(const char_, const char_)' sollte in 'std' deklariert worden sein
DATEI _fopen64(const char * Dateinamen einschränken , const char * Modus einschränken );
^
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:450:83: Fehler: 'FILE_ std::fopen(const char_, const char_)' kollidiert mit einer vorherigen Deklaration
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:449:17: Hinweis: vorherige Deklaration 'FILE* fopen(const char_, const char_)'
DATEI _ cdecl fopen(const char * __restrict _Filename,const char * __restrict__ _Mode) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
^
In Datei enthalten von C:/TDM-GCC-64/x86_64-w64-mingw32/include/locale.h:12:0,
aus C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/ clocale:42 ,
aus C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/x86_64-w64-mingw32/bits/c++locale.h:41,
aus C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/bits/localefwd.h:40,
aus C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/ string:43 ,
von dmlc-core/include/dmlc/base.h:154,
von include/xgboost/data.h:10,
von src/c_api/c_api.cc:3:
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:450:83: Fehler: 'FILE_ std::fopen(const char_, const char_)' sollte in 'std' deklariert worden sein
DATEI _fopen64(const char * Dateinamen einschränken , const char * Modus einschränken );
^
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:450:83: Fehler: 'FILE_ std::fopen(const char_, const char_)' kollidiert mit einer vorherigen Deklaration
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:449:17: Hinweis: vorherige Deklaration 'FILE* fopen(const char_, const char_)'
DATEI _ cdecl fopen(const char * __restrict _Filename,const char * __restrict__ _Mode) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
^
Makefile:97 : Rezept für Ziel 'build/c_api/c_api_error.o' fehlgeschlagen
mingw32-make: _* [build/c_api/c_api_error.o] Fehler 1mingw32-make: * Warten auf unfertige Jobs....Makefile:97 : Rezept für das Ziel 'build/data/simple_dmatrix.o' fehlgeschlagenmingw32-make: * * [build/data/simple_dmatrix.o] Fehler 1
In Datei enthalten von dmlc-core/include/dmlc/data.h:16:0,
von include/xgboost/data.h:11,
von src/data/sparse_page_raw_format.cc:6:
dmlc-core/include/dmlc/./registry.h:218:22: Warnung: 'xgboost::data::make_SparsePageFormat_raw *' definiert aber nicht verwendet [-Wunused-variable]statisch EntryType & __make_ ## EntryTypeName ## _ ## Name ## __ =^src/data/./sparse_batch_page.h:250:3: Hinweis: in Erweiterung des Makros 'DMLC_REGISTRY_REGISTER'DMLC_REGISTRY_REGISTER(::xgboost::data::SparsePageFormatReg, SparsePageFormat, Name)^src/data/sparse_page_raw_format.cc:93:1: Hinweis: in Erweiterung des Makros 'XGBOOST_REGISTER_SPARSE_PAGE_FORMAT'XGBOOST_REGISTER_SPARSE_PAGE_FORMAT(roh)^Makefile:97 : Rezept für das Ziel 'build/data/sparse_page_raw_format.o' fehlgeschlagenmingw32-make: * * [build/data/sparse_page_raw_format.o] Fehler 1
src/c_api/c_api.cc:739:12: Warnung: 'XGBOOST_LINK_RABIT_C_API_' definiert aber nicht verwendet [-Wunused-variable]
static int XGBOOST_LINK_RABIT_C_API_ = RabitLinkTag();
^
Makefile:97 : Rezept für das Ziel 'build/c_api/c_api.o' fehlgeschlagen
mingw32-make: *** [build/c_api/c_api.o] Fehler 1

Hilfreichster Kommentar

@ziqilau @tqchen @JasonTianCHD @yanqingmen
Behoben, einfach Repo klonen und dann zu 9a48a40 auschecken, bis sie es beheben, irgendwas in den letzten Commits muss die Kompilierung vermasselt haben:

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

Danke schön!

Alle 19 Kommentare

Ich habe das gleiche Problem!!

Ich habe das gleiche Problem.

Ich auch!

gleich.......

Windows ist wirklich keine gute Wahl, um ml zu tun.

@ziqilau @tqchen @JasonTianCHD @yanqingmen
Behoben, einfach Repo klonen und dann zu 9a48a40 auschecken, bis sie es beheben, irgendwas in den letzten Commits muss die Kompilierung vermasselt haben:

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

Danke schön!

Ich kann bestätigen, dass dies vorerst funktioniert. Danke vielmals!

Ja, nach 2 Tagen Herumspielen hat der Fix von Cortajarena funktioniert! Ich danke dir sehr!!

Danke !! @Cortajarena

Danke @Cortajarena !

Danke @Cortajarena - du hast meinen Tag gerettet! :-)

Danke @Cortajarena!

_Als ich jedoch xgboost in Jupyter Nootbook importierte,_

Importieren von OS
mingw_path = "C:TDM-GCC-64bin"
os.environ['PATH'] = mingw_path + ';' + os.environ['PFAD']
xgboost als xgb importieren

_Ich habe eine Fehlermeldung erhalten:_

OSError Traceback (letzter Aufruf zuletzt)
in()
----> 1 xgboost als xgb importieren

C:UsersLAnaconda3libsite-packagesxgboost-0.4-py3.5.eggxgboost__init__.py in()
9 importieren os
10
---> 11 von .core importieren DMatrix, Booster
12 aus .training Importzug, Lebenslauf
13 ab . rabit importieren # noqa

C:UsersLAnaconda3libsite-packagesxgboost-0.4-py3.5.eggxgboostcore.py in()
110
111 # Laden Sie die XGBoost-Bibliothek global
--> 112 _LIB = _load_lib()
113
114

C:UsersLAnaconda3libsite-packagesxgboost-0.4-py3.5.eggxgboostcore.py in _load_lib()
104 if len(lib_path) == 0:
105 zurück Keine
--> 106 lib = ctypes.cdll.LoadLibrary(lib_path[0])
107 lib.XGBGetLastError.restype = ctypes.c_char_p
108 Rückgabebibliothek

C:UsersLAnaconda3libctypes__init__.py in LoadLibrary(self, name)
423
424 def LoadLibrary(self, name):
--> 425 Rückgabe self._dlltype(name)
426
427 cdll = LibraryLoader(CDLL)

C:UsersLAnaconda3libctypes__init__.py in init (self, name, mode, handle, use_errno, use_last_error)
345
346 wenn Handle auf None lautet:
--> 347 self._handle = _dlopen(self._name, mode)
348 sonst:
349 self._handle = handle

OSError: [WinError 1114] Eine Initialisierungsroutine für eine Dynamic Link Library (DLL) ist fehlgeschlagen.

Hatte jemand das gleiche Problem? Wie man es repariert?

Danke @Cortajarena für den Tipp!
Bekommt sonst noch jemand eine nachfolgende Fehlermeldung, dass die "XGBoost-Bibliothek im Kandidatenpfad nicht gefunden werden kann"?
Ich verwende Anaconda 4.0.0 mit Python 3.5.1 unter Windows7.
Die folgenden Befehle haben gut funktioniert:

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

Als ich zurück zu Anaconda Prompt wechselte, zum Python-Packages-Ordner umgeleitet und versucht habe:

python setup.py install

Ich habe die Fehlermeldung erhalten, dass die Bibliothek nicht gefunden werden konnte und eine Kandidatenliste enthält.
Ideen zur Behebung?

@lrvenable

Geben Sie nach Ausführung der von Ihnen benannten Schritte Folgendes ein:

cd python-package

Sie befinden sich dann im Python-Paketverzeichnis (im xgboost-Ordner des bereits geklonten Repositorys).
Geben Sie dann dies in die Konsole ein:

python setup.py install

Stellen Sie sicher, dass Sie die Bit-Bash anstelle der Windows-Eingabeaufforderung verwenden!
Danke schön!

@Cortajarena du bist ein absoluter Retter. vielen herzlichen Dank!

das hat das Problem für mich behoben (Win7 64Bit, mingw-w64):

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

wenn !definiert( GNUC )

definiere fopen64 std:: fopen HINWEIS : entferne "std::"

endif

if (definiert MINGW32 ) || (definiert MINGW64 )

definiere fopen64 std:: fopen HINWEIS : entferne "std::"

endif

=>

wenn !definiert( GNUC )

definiere fopen64 fopen

endif

if (definiert MINGW32 ) || (definiert MINGW64 )

definiere fopen64 fopen

endif

Das Upstream-Problem wurde behoben und der Verweis auf dmlc-core wurde aktualisiert #1408 . Ich würde vorschlagen, dass jemand dieses Problem schließt, damit die Leute nicht weiter die Version des Codes vom 5. Juni installieren.

Ich habe das R-Paket unter Windows 7 erstellt. Das neueste xgboost-Paket von CRAN wurde nicht erstellt.

Die Lösung von @ Far0n hat bei mir funktioniert.

@Cortajarena @lrvenable

Ich verstehe es

 $ 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
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

uasthana15 picture uasthana15  ·  4Kommentare

nicoJiang picture nicoJiang  ·  4Kommentare

RanaivosonHerimanitra picture RanaivosonHerimanitra  ·  3Kommentare

nnorton24 picture nnorton24  ·  3Kommentare

tqchen picture tqchen  ·  4Kommentare