Xgboost: Python 2.7でのインポートは、Win7で127エラーで失敗します

作成日 2016年03月07日  ·  3コメント  ·  ソース: dmlc/xgboost

Windows 7、Rは正常に動作します
python 2.7.10 | EPD 7.5-3(64ビット)、numpy、scipy、theanoなどは正常に動作します

手順:

  • 再帰的に複製されたリポジトリ
  • メインディレクトリでビルドおよび作成します(目に見えるエラーはありません。libxgboost.dllおよびlibxgboost.aライブラリは/ libフォルダーにあります)
  • python-packageフォルダーに切り替え、 python setup.py installを呼び出します。これも、目に見えるエラーはありません。
  • Pythonを起動し、呼び出します
    >>>import xgboost
    次のエラーメッセージが表示されます。
  File "<stdin>", line 1, in <module>
  File "xgboost\__init__.py", line 11, in <module>
    from .core import DMatrix, Booster
  File "xgboost\core.py", line 83, in <module>
    _LIB = _load_lib()
  File "xgboost\core.py", line 77, in _load_lib
    lib = ctypes.cdll.LoadLibrary(lib_path[0])
  File "P:\Python\Python27\lib\ctypes\__init__.py", line 443, in LoadLibrary
    return self._dlltype(name)
  File "P:\Python\Python27\lib\ctypes\__init__.py", line 365, in __init__
    self._handle = _dlopen(self._name, mode)
WindowsError: [Error 127] The specified procedure could not be found

core.pyをハッキングして、実際にロードしようとしているライブラリを確認しました:)
それは実際に正しいdllを探します
/Sources/xgb/python-package/xgboost/../../lib/libxgboost.dll
まさにそれが置かれている場所で、数分前に新しく建てられました

最も参考になるコメント

同じエラーが発生しましたが、修正により多くの質問に答えられなくなりました。 私はもともと、いくつかのより明確な方向性を使用してminGWでコンパイルしました。

何らかの理由で、システムパスの_beginning_に(私にとっては終了ではなく)mingwパスを設定することで、そのコンパイルの問題が解決したことが判明しました。

>>> dir = r'C:\Program Files\mingw-w64\x86_64-6.2.0-posix-seh-rt_v5-rev1\mingw64\bin'
>>> import os
>>> os.environ['PATH'].count(dir) # Here I show its already in the path at least once
1
>>> os.environ['PATH'].find(dir) # We see its at the end of my path
1491
>>> os.environ['PATH'] = dir + ';' + os.environ['PATH'] # I put it on the beginning of the path, NOT THE END.
>>> import xgboost # I modified core.py to print the directory of the requested dll. It imports successfully.
C:\Users\Joey\Anaconda2\lib\site-packages\xgboost-0.6-py2.7.egg\xgboost\libxgboost.dll

これが機能した唯一の方法です

要求されたdllのディレクトリは、失敗した場合と成功した場合の両方で同じであるため、そうではないことに注意してください。 変更されるのは、パス変数の先頭にmingw/binディレクトリを配置することだけです。 したがって、minGWまたはminGWとpythonの通信方法に問題がある可能性があると思います(ここでは専門家ではありません)。

実際の修正は、Visual Studioを使用してコンパイルし、cmakeをインストールして(インストール中にパスに追加してください!)、Visual Studioの指示に従うことでした(これは本当に詳しく説明する必要があります。誰もがこのようなことに精通しているわけではありません)。 つまり、合計:Git For Windowsを使用して指示に従い、リポジトリのクローンを作成し、cmakeをインストールして、パスに「cmake」を追加し、Visual Studioのインストール指示に従って、cmakeとVisual Studioを使用してビルドします(最新のVisual StudioCommunityEditionをインストールする場合まだ行っていません)、libxgboost.dllのみをpython-packagesディレクトリにコピーし、コマンドプロンプトを開いて、python-packagesから「pythonsetup.pyinstall」を実行します。

Visual Studioのインストールでは、システムがminGWのパスを知っている必要はありません。

全てのコメント3件

  1. xgboostをどのように構築しますか?

    あなたはこれに従うべきです:
    http://xgboost.readthedocs.io/en/latest/build.html#building -on-windows

  2. 次に、Pythonパッケージをインストールします

私はあなたとまったく同じエラーを抱えていました。
マシンに他のバージョンのPythonをアンインストールして、再起動してみてください。 私はこれが良い解決策ではないことを知っていますが、それは私にとってはうまくいきます。

同じエラーが発生しましたが、修正により多くの質問に答えられなくなりました。 私はもともと、いくつかのより明確な方向性を使用してminGWでコンパイルしました。

何らかの理由で、システムパスの_beginning_に(私にとっては終了ではなく)mingwパスを設定することで、そのコンパイルの問題が解決したことが判明しました。

>>> dir = r'C:\Program Files\mingw-w64\x86_64-6.2.0-posix-seh-rt_v5-rev1\mingw64\bin'
>>> import os
>>> os.environ['PATH'].count(dir) # Here I show its already in the path at least once
1
>>> os.environ['PATH'].find(dir) # We see its at the end of my path
1491
>>> os.environ['PATH'] = dir + ';' + os.environ['PATH'] # I put it on the beginning of the path, NOT THE END.
>>> import xgboost # I modified core.py to print the directory of the requested dll. It imports successfully.
C:\Users\Joey\Anaconda2\lib\site-packages\xgboost-0.6-py2.7.egg\xgboost\libxgboost.dll

これが機能した唯一の方法です

要求されたdllのディレクトリは、失敗した場合と成功した場合の両方で同じであるため、そうではないことに注意してください。 変更されるのは、パス変数の先頭にmingw/binディレクトリを配置することだけです。 したがって、minGWまたはminGWとpythonの通信方法に問題がある可能性があると思います(ここでは専門家ではありません)。

実際の修正は、Visual Studioを使用してコンパイルし、cmakeをインストールして(インストール中にパスに追加してください!)、Visual Studioの指示に従うことでした(これは本当に詳しく説明する必要があります。誰もがこのようなことに精通しているわけではありません)。 つまり、合計:Git For Windowsを使用して指示に従い、リポジトリのクローンを作成し、cmakeをインストールして、パスに「cmake」を追加し、Visual Studioのインストール指示に従って、cmakeとVisual Studioを使用してビルドします(最新のVisual StudioCommunityEditionをインストールする場合まだ行っていません)、libxgboost.dllのみをpython-packagesディレクトリにコピーし、コマンドプロンプトを開いて、python-packagesから「pythonsetup.pyinstall」を実行します。

Visual Studioのインストールでは、システムがminGWのパスを知っている必要はありません。

このページは役に立ちましたか?
0 / 5 - 0 評価