Windows 7, R์ ์ ์๋ํฉ๋๋ค
ํ์ด์ฌ 2.7.10 | EPD 7.5-3(64๋นํธ), numpy, scipy, theano ๋ฑ์ด ์ ์๋ํฉ๋๋ค.
๋จ๊ณ:
python setup.py install
ํธ์ถํ๊ณ ๋ค์ ๋์ ๋ณด์ด๋ ์ค๋ฅ๊ฐ ์์ต๋๋ค.>>>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
์ ํํ ๋ช ๋ถ ์ ์ ์ง์ด์ง ๊ณณ์
๋๋ค.
xgboost๋ฅผ ์ด๋ป๊ฒ ๊ตฌ์ถํฉ๋๊น?
๋น์ ์ ์ด๊ฒ์ ๋ฐ๋ผ์ผํฉ๋๋ค:
http://xgboost.readthedocs.io/en/latest/build.html#building -on-windows
๋๋ ๋น์ ๊ณผ ๋๊ฐ์ ์ค๋ฅ๊ฐ์์์ต๋๋ค.
์ปดํจํฐ์์ ๋ค๋ฅธ ๋ฒ์ ์ 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์ด ํต์ ํ๋ ๋ฐฉ์(์ฌ๊ธฐ์๋ ์ ๋ฌธ๊ฐ๊ฐ ์๋)์ ๋ฌธ์ ์ผ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
REAL ์์ ์ cmake๋ฅผ ์ค์นํ๊ณ (์ค์นํ๋ ๋์ ๊ฒฝ๋ก์ ์ถ๊ฐ!) Visual Studio๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํ์ผํ๊ณ Visual Studio ์ง์นจ(์ ๋ง ์์ธํ ์ค๋ช ํด์ผ ํ๋ฉฐ ๋ชจ๋ ์ฌ๋์ด ์ด ์์ ์ ๋ฅ์ํ ๊ฒ์ ์๋๋๋ค)์ ๋ฐ๋ฅด๋ ๊ฒ์ ๋๋ค. ์ด์ฒด์ ์ผ๋ก: Windows์ฉ Git์ ์ฌ์ฉํ์ฌ ์ง์นจ์ ๋ฐ๋ฅด๊ณ , ์ ์ฅ์๋ฅผ ๋ณต์ ํ๊ณ , cmake๋ฅผ ์ค์นํ๊ณ , ๊ฒฝ๋ก์ 'cmake'๋ฅผ ์ถ๊ฐํ๊ณ , Visual Studio ์ค์น ์ง์นจ์ ๋ฐ๋ผ cmake ๋ฐ Visual Studio๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋ํฉ๋๋ค. ์์ง ์์), ์ด์ ์ ์ผํ libxgboost.dll์ python-packages ๋๋ ํฐ๋ฆฌ์ ๋ณต์ฌํ๊ณ ๋ช ๋ น ํ๋กฌํํธ๋ฅผ ์ด๊ณ ์ด์ python-packages์์ "python setup.py install"์ ์ฝ๋๋ค.
Visual Studio ์ค์น์ ๊ฒฝ์ฐ ์์คํ ์์ minGW์ ๊ฒฝ๋ก๋ฅผ ์ ํ์๊ฐ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๋ ๊ฐ์ ์ค๋ฅ๊ฐ ์์์ง๋ง ์์ ์ผ๋ก ์ธํด ๋ง์ ์ง๋ฌธ์ ๋ต์ด ์์์ต๋๋ค. ๋๋ ์๋ ์ข ๋ ๋ช ํํ ์ง์นจ ์ ์ฌ์ฉํ์ฌ minGW๋ก ์ปดํ์ผํ์ต๋๋ค.
์ด๋ค ์ด์ ๋ก๋ ์์คํ ๊ฒฝ๋ก์ _beginning_์ mingw ๊ฒฝ๋ก๊ฐ ์์ผ๋ฉด(๋๋ฅผ ์ํ ๋์ด ์๋) ํด๋น ์ปดํ์ผ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
์ด๊ฒ์ด ์ ์ผํ ๋ฐฉ๋ฒ์ด์์ต๋๋ค.
์์ฒญํ์ dll์ ๋๋ ํ ๋ฆฌ๋ ์คํจ์์ ์ฑ๊ณต์ ๋ชจ๋ ๋์ผํ๋ฏ๋ก ๊ทธ๋ ์ง ์์ผ๋ ์ ์ํ์๊ธฐ ๋ฐ๋๋๋ค. ๋ณ๊ฒฝ๋๋ ์ ์ผํ ๊ฒ์ ๊ฒฝ๋ก ๋ณ์์ ์์ ๋ถ๋ถ์ mingw/bin ๋๋ ํ ๋ฆฌ๋ฅผ ๋ฃ๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ minGW ๋๋ minGW์ python์ด ํต์ ํ๋ ๋ฐฉ์(์ฌ๊ธฐ์๋ ์ ๋ฌธ๊ฐ๊ฐ ์๋)์ ๋ฌธ์ ์ผ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
REAL ์์ ์ cmake๋ฅผ ์ค์นํ๊ณ (์ค์นํ๋ ๋์ ๊ฒฝ๋ก์ ์ถ๊ฐ!) Visual Studio๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํ์ผํ๊ณ Visual Studio ์ง์นจ(์ ๋ง ์์ธํ ์ค๋ช ํด์ผ ํ๋ฉฐ ๋ชจ๋ ์ฌ๋์ด ์ด ์์ ์ ๋ฅ์ํ ๊ฒ์ ์๋๋๋ค)์ ๋ฐ๋ฅด๋ ๊ฒ์ ๋๋ค. ์ด์ฒด์ ์ผ๋ก: Windows์ฉ Git์ ์ฌ์ฉํ์ฌ ์ง์นจ์ ๋ฐ๋ฅด๊ณ , ์ ์ฅ์๋ฅผ ๋ณต์ ํ๊ณ , cmake๋ฅผ ์ค์นํ๊ณ , ๊ฒฝ๋ก์ 'cmake'๋ฅผ ์ถ๊ฐํ๊ณ , Visual Studio ์ค์น ์ง์นจ์ ๋ฐ๋ผ cmake ๋ฐ Visual Studio๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋ํฉ๋๋ค. ์์ง ์์), ์ด์ ์ ์ผํ libxgboost.dll์ python-packages ๋๋ ํฐ๋ฆฌ์ ๋ณต์ฌํ๊ณ ๋ช ๋ น ํ๋กฌํํธ๋ฅผ ์ด๊ณ ์ด์ python-packages์์ "python setup.py install"์ ์ฝ๋๋ค.
Visual Studio ์ค์น์ ๊ฒฝ์ฐ ์์คํ ์์ minGW์ ๊ฒฝ๋ก๋ฅผ ์ ํ์๊ฐ ์์ต๋๋ค.