Xgboost: libpath['find_lib_path']() mengembalikan jalur absolut untuk libxgboost.dll di Windows; pemasangan instalasi gagal

Dibuat pada 7 Des 2016  ·  3Komentar  ·  Sumber: dmlc/xgboost

Informasi lingkungan

Sistem Operasi: Windows 7

Kompiler: MSVC++ 12 (Visual Studio 2013)

Paket yang digunakan (python/R/jvm/C++): Python 3.4.4

xgboost versi yang digunakan: 0.6

Jika menginstal dari sumber, harap berikan

  1. Komit hash ( git rev-parse HEAD ): e7fbc8591fa7277ee4c474b7371c48c11b34cbde
  2. Log:
Install libxgboost from: ['C:\\Python34\\XGBoost\\python-package\\xgboost\\../..
/lib/libxgboost.dll']
running install
running bdist_egg
running egg_info
writing requirements to xgboost.egg-info\requires.txt
writing xgboost.egg-info\PKG-INFO
writing dependency_links to xgboost.egg-info\dependency_links.txt
writing top-level names to xgboost.egg-info\top_level.txt
reading manifest file 'xgboost.egg-info\SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching '*' under directory 'xgboost\include'
warning: no files found matching '*' under directory 'xgboost\src'
warning: no files found matching '*' under directory 'xgboost\make'
warning: no files found matching '*' under directory 'xgboost\rabit'
warning: no files found matching '*' under directory 'xgboost\lib'
warning: no files found matching '*' under directory 'xgboost\dmlc-core'
warning: no previously-included files matching '*.o' found anywhere in distribution
warning: no previously-included files matching '*.a' found anywhere in distribution
warning: no previously-included files matching '*.pyo' found anywhere in distribution
warning: no previously-included files matching '*.pyc' found anywhere in distribution
writing manifest file 'xgboost.egg-info\SOURCES.txt'
installing library code to build\bdist.win-amd64\egg
running install_lib
running build_py
error: Error: setup script specifies an absolute path:

    C:\Python34\XGBoost\python-package\xgboost\..\..\lib\libxgboost.dll

setup() arguments must *always* be /-separated paths relative to the
setup.py directory, *never* absolute paths.

Jika Anda menggunakan paket python, harap berikan

  1. Versi dan distribusi python - versi resmi 3.4.4 untuk Win64
  2. Perintah untuk menginstal xgboost jika Anda tidak menginstal dari sumber - python.exe setup.py install (via setuptools)

Langkah-langkah untuk mereproduksi

  1. Unduh kode sumber xgboost dari github
  2. mkdir build && cd build && cmake .. -G"Visual Studio 12 2013 Win64"
  3. Buka xgboost.sln dengan VS2013 dan bangun semua solusi dengan konfigurasi Rilis, untuk platform x64. Anda akan mendapatkan perpustakaan lib/libxgboost.dll.
  4. cd ..python-package && python.exe setup.py install

Apa yang sudah kamu coba?

  1. Ganti jalur file di file SOURCES.txt - ini tidak berpengaruh, karena file ini selalu ditimpa
  2. Ubah python-package/MANIFEST.in dan kecualikan direktori lib - ini tidak berpengaruh, karena tidak ada aturan untuk file .dll
  3. Ganti python-package/setup.py, baris 19
    LIB_PATH = libpath['find_lib_path']()
    ke
    LIB_PATH = ['../lib/libxgboost.dll']
    Ini adalah solusinya.
    Omong-omong, ini adalah masalah, dan tim XGBoost mungkin akan menyelesaikan ini dengan cara yang tepat.

Komentar yang paling membantu

Saya juga menemukan kesalahan ini di centos 6.5 64. Saya mencari solusi dan memutuskan untuk mengedit file python-package/setup.py.
Cukup setel "include_package_data=False" ke-38 lalu saya jalankan "python setup.py install" dengan sukses. Akhirnya "impor xgboost as xgb" benar. Namun saya menjalankan demo, saya menemukan kesalahan lagi.

Akhirnya saya membersihkan file kemudian membangun kembali xgboost lagi. Untuk menjalankan instalasi python dan sekarang tidak apa-apa!


31-12-2016:
ketika saya menginstal xgboost di centos 7 x86_64, saya menemukan kesalahan ini lagi. Namun saya mengkompilasi ulang xgboost dan gagal menginstal python.
Saya mencoba make atau cmake untuk dikompilasi, keduanya baik-baik saja. Tetapi ketika saya menginstal python dan menemui kesalahan yang sama.
Saya hanya ingin tahu mengapa itu tidak bagus di centos 7, hanya karena versinya.

Semua 3 komentar

Saya juga menemukan kesalahan ini di centos 6.5 64. Saya mencari solusi dan memutuskan untuk mengedit file python-package/setup.py.
Cukup setel "include_package_data=False" ke-38 lalu saya jalankan "python setup.py install" dengan sukses. Akhirnya "impor xgboost as xgb" benar. Namun saya menjalankan demo, saya menemukan kesalahan lagi.

Akhirnya saya membersihkan file kemudian membangun kembali xgboost lagi. Untuk menjalankan instalasi python dan sekarang tidak apa-apa!


31-12-2016:
ketika saya menginstal xgboost di centos 7 x86_64, saya menemukan kesalahan ini lagi. Namun saya mengkompilasi ulang xgboost dan gagal menginstal python.
Saya mencoba make atau cmake untuk dikompilasi, keduanya baik-baik saja. Tetapi ketika saya menginstal python dan menemui kesalahan yang sama.
Saya hanya ingin tahu mengapa itu tidak bagus di centos 7, hanya karena versinya.

@anddelu include_package_data=False adalah suatu keharusan karena menggunakan MANIFEST.in untuk pemeliharaan paket dan ini hanya mempengaruhi instalasi, bukan jalan. Saya pikir langkah terakhir Anda untuk membangun kembali xgboost adalah solusi yang tepat di mana include_package_data=False harus tetap apa adanya.

Saya mengalami kesalahan yang sama di Linux yang menjalankan Anaconda Python 3.5.

Saya pikir saya memperbaikinya dengan membuat modifikasi berikut ke setup.py:

diff --git a/python-package/setup.py b/python-package/setup.py
index 27fc212..ec9b806 100644
--- a/python-package/setup.py
+++ b/python-package/setup.py
@@ -7,7 +7,7 @@ from setuptools import setup, find_packages
 # import subprocess
 sys.path.insert(0, '.')

-CURRENT_DIR = os.path.dirname(__file__)
+CURRENT_DIR = os.path.abspath(os.path.dirname(__file__))

 # We can not import `xgboost.libpath` in setup.py directly since xgboost/__init__.py
 # import `xgboost.core` and finally will import `numpy` and `scipy` which are setup
@@ -17,6 +17,7 @@ libpath = {'__file__': libpath_py}
 exec(compile(open(libpath_py, "rb").read(), libpath_py, 'exec'), libpath, libpath)

 LIB_PATH = libpath['find_lib_path']()
+LIB_PATH = [os.path.relpath(LIB_PATH[0], CURRENT_DIR)]
 print("Install libxgboost from: %s" % LIB_PATH)
 # Please use setup_pip.py for generating and deploying pip installation
 # detailed instruction in setup_pip.py
Apakah halaman ini membantu?
0 / 5 - 0 peringkat