Xgboost: Der Import in Python 2.7 schlägt mit dem Fehler 127 in Win 7 fehl

Erstellt am 7. März 2016  ·  3Kommentare  ·  Quelle: dmlc/xgboost

Windows 7, R funktioniert einwandfrei
Python 2.7.10 | EPD 7.5-3 (64-Bit), numpy, scipy, theano usw. funktionieren einwandfrei

Schritte:

  • geklontes Repository rekursiv
  • build und make im Hauptverzeichnis (keine sichtbaren Fehler, die Bibliotheken libxgboost.dll und libxgboost.a befinden sich im Ordner /lib)
  • Wechseln Sie in den Python-Paketordner, rufen python setup.py install , wieder keine sichtbaren Fehler
  • python starten, anrufen
    >>>import xgboost
    bekomme folgende Fehlermeldung:
  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

Ich habe core.py gehackt, um zu überprüfen, welche Bibliothek es tatsächlich zu laden versucht :)
Es sucht tatsächlich nach der richtigen DLL
/Sources/xgb/python-package/xgboost/../../lib/libxgboost.dll
Genau dort, wo es sich befindet, wurde es vor wenigen Minuten frisch gebaut

Hilfreichster Kommentar

Ich hatte den gleichen Fehler, aber der Fix lässt viele Fragen unbeantwortet. Ich habe ursprünglich mit minGW kompiliert, indem ich einige klarere Anweisungen verwendet habe.

Es stellte sich heraus, dass das Problem für diese Kompilierung aus irgendeinem Grund gelöst wurde, wenn der mingw-Pfad am _Anfang_ des Systempfads (und nicht am Ende für mich) stand.

>>> 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

Nur so hat es funktioniert

Bitte beachten Sie, dass das Verzeichnis der angeforderten DLL sowohl im Fehler- als auch im Erfolgsfall dasselbe ist, also ist es das nicht. Das Einzige, was sich ändert, ist, das Verzeichnis mingw/bin an den Anfang der Pfadvariablen zu setzen. Daher glaube ich, dass es ein Problem mit minGW sein könnte oder wie minGW und Python kommunizierten (hier kein Experte).

Die WIRKLICHE Lösung bestand darin, mithilfe von Visual Studio zu kompilieren, indem Sie cmake installieren (während der Installation zu Ihrem Pfad hinzufügen!) und den Anweisungen von Visual Studio folgen (die wirklich ausgearbeitet werden müssen, nicht jeder ist ein Experte in diesem Zeug). Insgesamt also: Befolgen Sie die Anweisungen mit Git für Windows, klonen Sie das Repository, installieren Sie cmake und fügen Sie „cmake“ zu Ihrem Pfad hinzu, befolgen Sie die Installationsanweisungen von Visual Studio, um mit cmake und Visual Studio zu erstellen (installieren Sie die neueste Visual Studio Community Edition, wenn Sie noch nicht), kopiere nun die einzige libxgboost.dll in dein python-packages-Verzeichnis, öffne eine Eingabeaufforderung und nun „python setup.py install“ aus python-packages.

Hinweis: Für Visual Studio-Installationen muss das System den Pfad von minGW nicht kennen.

Alle 3 Kommentare

  1. Wie baut man den xgboost auf?

    Sie sollten dies befolgen:
    http://xgboost.readthedocs.io/en/latest/build.html#building -on-windows

  2. Installieren Sie dann das Python-Paket

Ich hatte genau den gleichen Fehler bei dir.
Versuchen Sie, eine andere Version von Python auf Ihrem Computer zu deinstallieren und neu zu starten. Ich weiß, das ist keine schöne Lösung, aber es funktioniert für mich.

Ich hatte den gleichen Fehler, aber der Fix lässt viele Fragen unbeantwortet. Ich habe ursprünglich mit minGW kompiliert, indem ich einige klarere Anweisungen verwendet habe.

Es stellte sich heraus, dass das Problem für diese Kompilierung aus irgendeinem Grund gelöst wurde, wenn der mingw-Pfad am _Anfang_ des Systempfads (und nicht am Ende für mich) stand.

>>> 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

Nur so hat es funktioniert

Bitte beachten Sie, dass das Verzeichnis der angeforderten DLL sowohl im Fehler- als auch im Erfolgsfall dasselbe ist, also ist es das nicht. Das Einzige, was sich ändert, ist, das Verzeichnis mingw/bin an den Anfang der Pfadvariablen zu setzen. Daher glaube ich, dass es ein Problem mit minGW sein könnte oder wie minGW und Python kommunizierten (hier kein Experte).

Die WIRKLICHE Lösung bestand darin, mithilfe von Visual Studio zu kompilieren, indem Sie cmake installieren (während der Installation zu Ihrem Pfad hinzufügen!) und den Anweisungen von Visual Studio folgen (die wirklich ausgearbeitet werden müssen, nicht jeder ist ein Experte in diesem Zeug). Insgesamt also: Befolgen Sie die Anweisungen mit Git für Windows, klonen Sie das Repository, installieren Sie cmake und fügen Sie „cmake“ zu Ihrem Pfad hinzu, befolgen Sie die Installationsanweisungen von Visual Studio, um mit cmake und Visual Studio zu erstellen (installieren Sie die neueste Visual Studio Community Edition, wenn Sie noch nicht), kopiere nun die einzige libxgboost.dll in dein python-packages-Verzeichnis, öffne eine Eingabeaufforderung und nun „python setup.py install“ aus python-packages.

Hinweis: Für Visual Studio-Installationen muss das System den Pfad von minGW nicht kennen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen