Xgboost: xgboostのインストール中にエラーが発生しました

作成日 2016年06月10日  ·  19コメント  ·  ソース: dmlc/xgboost

ねえ、「make」コマンドを使おうとするとエラーが発生します。 mingw-64とTDM-GCCコンパイラの両方を試しましたが、うまくいきませんでした。 エラーログは次のとおりです。

$ 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
C:/TDM-GCC-64/x86_64-w64-mingw32/include/locale.h:12:0からインクルードされたファイルでは、
C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / clocale:42から
C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / x86_64-w64-mingw32 / bits / c ++ locale.h:41から
C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / bits / localefwd.h:40から、
C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / string:43から
dmlc-core / include / dmlc / base.h:154から、
include / xgboost / data.h:10から、
src / data / simple_dmatrix.cc:7から:
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:450:83:エラー: 'FILE * std :: fopen(const char_、const char_)'は 'std'内で宣言されている必要があります
FILE _fopen64(const char *ファイル名の制限、const char *制限モード);
^
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:450:83:エラー: 'FILE_ std :: fopen(const char_、const char_)'は前の宣言と競合します
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:449:17:注:前の宣言 'FILE * fopen(const char_、const char_)'
FILE _ cdecl fopen(const char * __restrict _Filename、const char * __restrict__ _Mode)__ MINGW_ATTRIB_DEPRECATED_SEC_WARN;
^
C:/TDM-GCC-64/x86_64-w64-mingw32/include/locale.h:12:0からインクルードされたファイルでは、
C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / clocale:42から
C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / x86_64-w64-mingw32 / bits / c ++ locale.h:41から
C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / bits / localefwd.h:40から、
C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / string:43から
dmlc-core / include / dmlc / base.h:154から、
include / xgboost / data.h:10から、
src / data / sparse_page_raw_format.cc:6から:
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:450:83:エラー: 'FILE_ std :: fopen(const char_、const char_)'は 'std'内で宣言されている必要があります
FILE _fopen64(const char *ファイル名の制限、const char *制限モード);
^
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:450:83:エラー: 'FILE_ std :: fopen(const char_、const char_)'は前の宣言と競合します
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:449:17:注:前の宣言 'FILE * fopen(const char_、const char_)'
FILE _ cdecl fopen(const char * __restrict _Filename、const char * __restrict__ _Mode)__ MINGW_ATTRIB_DEPRECATED_SEC_WARN;
^
C:/TDM-GCC-64/x86_64-w64-mingw32/include/locale.h:12:0からインクルードされたファイルでは、
C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / clocale:42から
C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / x86_64-w64-mingw32 / bits / c ++ locale.h:41から
C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / bits / localefwd.h:40から、
C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / string:43から
dmlc-core / include / dmlc / base.h:154から、
src / c_api /./ c_api_error.h:9から、
src / c_api / c_api_error.cc:6から:
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:450:83:エラー: 'FILE_ std :: fopen(const char_、const char_)'は 'std'内で宣言されている必要があります
FILE _fopen64(const char *ファイル名の制限、const char *制限モード);
^
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:450:83:エラー: 'FILE_ std :: fopen(const char_、const char_)'は前の宣言と競合します
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:449:17:注:前の宣言 'FILE * fopen(const char_、const char_)'
FILE _ cdecl fopen(const char * __restrict _Filename、const char * __restrict__ _Mode)__ MINGW_ATTRIB_DEPRECATED_SEC_WARN;
^
C:/TDM-GCC-64/x86_64-w64-mingw32/include/locale.h:12:0からインクルードされたファイルでは、
C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / clocale:42から
C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / x86_64-w64-mingw32 / bits / c ++ locale.h:41から
C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / bits / localefwd.h:40から、
C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / string:43から
dmlc-core / include / dmlc / base.h:154から、
include / xgboost / data.h:10から、
src / c_api / c_api.cc:3から:
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:450:83:エラー: 'FILE_ std :: fopen(const char_、const char_)'は 'std'内で宣言されている必要があります
FILE _fopen64(const char *ファイル名の制限、const char *制限モード);
^
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:450:83:エラー: 'FILE_ std :: fopen(const char_、const char_)'は前の宣言と競合します
C:/TDM-GCC-64/x86_64-w64-mingw32/include/stdio.h:449:17:注:前の宣言 'FILE * fopen(const char_、const char_)'
FILE _ cdecl fopen(const char * __restrict _Filename、const char * __restrict__ _Mode)__ MINGW_ATTRIB_DEPRECATED_SEC_WARN;
^
Makefile:97 :ターゲット 'build / c_api /c_api_error.o'のレシピが失敗しました
mingw32-make: _ * [build / c_api /c_api_error.o]エラー1mingw32-make: *未完了のジョブを待っています...。Makefile:97 :ターゲット 'build / data /simple_dmatrix.o'のレシピが失敗しましたmingw32-make:* * [build / data /simple_dmatrix.o]エラー1
dmlc-core / include / dmlc / data.h:16:0からインクルードされたファイルでは、
include / xgboost / data.h:11から、
src / data / sparse_page_raw_format.cc:6から:
dmlc-core / include / dmlc /./registry.h:218:22:警告: 'xgboost :: data :: make_SparsePageFormat_raw *'が定義されていますが、使用されていません[-Wunused-variable]static EntryType&__ make_ ## EntryTypeName ## _ ##名前## __ =^src / data /./ sparse_batch_page.h:250:3:注:マクロ「DMLC_REGISTRY_REGISTER」の展開中DMLC_REGISTRY_REGISTER(:: xgboost :: data :: SparsePageFormatReg、SparsePageFormat、Name)^src / data / sparse_page_raw_format.cc:93:1:注:マクロ 'XGBOOST_REGISTER_SPARSE_PAGE_FORMAT'の展開中XGBOOST_REGISTER_SPARSE_PAGE_FORMAT(raw)^Makefile:97 :ターゲット 'build / data /sparse_page_raw_format.o'のレシピが失敗しましたmingw32-make:* * [build / data /sparse_page_raw_format.o]エラー1
src / c_api / c_api.cc:739:12:警告: 'XGBOOST_LINK_RABIT_C_API_'が定義されていますが、使用されていません[-Wunused-variable]
static int XGBOOST_LINK_RABIT_C_API_ = RabitLinkTag();
^
Makefile:97 :ターゲット 'build / c_api /c_api.o'のレシピが失敗しました
mingw32-make:*** [build / c_api /c_api.o]エラー1

最も参考になるコメント

@ziqilau @tqchen @JasonTianCHD @yanqingmen
修正済み。リポジトリのクローンを作成し、修正されるまで9a48a40にチェックアウトするだけです。最後のコミットで何かがコンパイルを台無しにしたに違いありません:

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

乾杯!

全てのコメント19件

私は同じ問題を抱えています!!

私は同じ問題を抱えています。

こっちも一緒!

同じ.......

Windowsは本当にmlを行うのに良い選択ではありません。

@ziqilau @tqchen @JasonTianCHD @yanqingmen
修正済み。リポジトリのクローンを作成し、修正されるまで9a48a40にチェックアウトするだけです。最後のコミットで何かがコンパイルを台無しにしたに違いありません:

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

乾杯!

とりあえず動作することを確認できます。 どうもありがとう!

はい、2日間いじり回した後、Cortajarenaからの修正が機能しました! どうもありがとう!!

ありがとうございます !! @Cortajarena

ありがとう@Cortajarena

ありがとう@ Cortajarena-あなたは私の日を救った! :-)

ありがとう@Cortajarena!

_しかし、xgboostをjupyternootbookにインポートしたとき_

OSのインポート
mingw_path = "C:TDM-GCC-64bin"
os.environ ['PATH'] = mingw_path + ';' + os.environ ['PATH']
xgboostをxgbとしてインポートする

_エラーメッセージが表示されました:_

OSErrorトレースバック(最後の最後の呼び出し)
()
----> 1インポートxgboostをxgbとして

C:UsersLAnaconda3libsite-packagesxgboost-0.4-py3.5.eggxgboost__init __。pyin()
9インポートOS
10
---> 11 from .core import DMatrix、Booster
.training import train、cvから12
13から。 ウサギをインポートする#noqa

C:UsersLAnaconda3libsite-packagesxgboost-0.4-py3.5.eggxgboostcore.py in()
110
111#XGBoostライブラリをグローバルにロードする
-> 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戻りなし
-> 106 lib = ctypes.cdll.LoadLibrary(lib_path [0])
107 lib.XGBGetLastError.restype = ctypes.c_char_p
108リターンライブラリ

C:LoadLibrary(self、name)のUsersLAnaconda3libctypes__init__.py
423
424 def LoadLibrary(self、name):
-> 425 return self._dlltype(name)
426
427 cdll = LibraryLoader(CDLL)

C:UsersLAnaconda3libctypes__init __。pyin init (self、name、mode、handle、use_errno、use_last_error)
345
ハンドルがNoneの場合は346:
-> 347 self._handle = _dlopen(self._name、mode)
348その他:
349 self._handle =ハンドル

OSError:[WinError 1114]ダイナミックリンクライブラリ(DLL)の初期化ルーチンが失敗しました。

誰かが同じ問題を抱えていましたか? それを修正する方法は?

ヒントをありがとう
「XGBoostライブラリが候補パスに見つかりません」という後続のエラーが発生する人はいますか?
私はWindows7のPython3.5.1でAnaconda4.0.0を使用しています。
次のコマンドは正常に機能しました。

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

Anaconda Promptに切り替えて、python-packagesフォルダーにリダイレクトし、次のことを試しました。

python setup.py install

ライブラリが見つからないというエラーが表示され、候補のリストが表示されます。
修正方法のアイデア?

@lrvenable

名前を付けた手順を実行した後、次のように入力します。

cd python-package

これで、pythonパッケージディレクトリ内(既にクローンを作成したリポジトリのxgboostフォルダー内)に移動します。
次に、コンソールに次のように入力します。

python setup.py install

Windowsコマンドプロンプトの代わりにビットbashを使用していることを確認してください!
乾杯!

@Cortajarenaあなたは絶対的な救世主です。 とても感謝しています!

それは私のための問題を修正しました(Win7 64ビット、mingw-w64):

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

if!defined( GNUC

fopen64 std :: fopenを定義します注:「std ::」を削除します

endif

if(定義済みMINGW32 )|| (定義済みMINGW64

fopen64 std :: fopenを定義します注:「std ::」を削除します

endif

=>

if!defined( GNUC

fopen64を定義するfopen

endif

if(定義済みMINGW32 )|| (定義済みMINGW64

fopen64を定義するfopen

endif

アップストリームの問題が修正され、dmlc-coreへの参照が更新されました#1408。 6月5日のバージョンのコードをインストールし続けないように、誰かがこの問題を解決することをお勧めします。

私はWindows7でRパッケージをビルドしていました。CRANの最新のxgboostパッケージはビルドされませんでした。

@ Far0nのソリューションは私のために働いた。

@Cortajarena @lrvenable

わかった

 $ 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
このページは役に立ちましたか?
0 / 5 - 0 評価