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
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)
----> 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)
=>
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
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!