#python #pyinstaller #xgboost
#python #pyinstaller #xgboost
Вопрос:
Я использую python 3.6.4, pyinstaller 3.4. Мой код импортирует numpy и xgboost. Я хочу создать .exe из проекта.
Приведенный ниже код в виде «.py» запускается без каких-либо проблем на моем компьютере
import xgboost as xgb
import numpy as np
init()
data = np.random.rand(5,10) # 5 entities, each contains 10 features
label = np.random.randint(2, size=5) # binary target
dtrain = xgb.DMatrix( data, label=label)
dtest = dtrain
param = {'bst:max_depth':2, 'bst:eta':1, 'silent':1, 'objective':'binary:logistic' }
param['nthread'] = 4
param['eval_metric'] = 'auc'
evallist = [(dtest,'eval'), (dtrain,'train')]
num_round = 10
bst = xgb.train( param, dtrain, num_round, evallist )
bst.dump_model('dump.raw.txt')
когда я конвертирую в exe
и подключаем к файлу .spec следующее:
datas, binaries, hiddenimports = collect_all("xgboost")
exe успешно создается
но когда я запускаю файл .exe, я получаю следующий экран:
PyInstaller cannot check for assembly dependencies.
Please install PyWin32 or pywin32-ctypes.
pip install pypiwin32
в любом случае у меня есть установка pypiwin32.
буду признателен, если кто-нибудь знает, как это решить?
Ответ №1:
После исследования:
Для создания exe с помощью pyinstaller из скрипта, который использует xgboost libary:
1. Сначала нужно захватить «xgboost.dll » и вставьте его в папку с именем «xgboost» в папке dist — ссылка:[http://www.picnet.com.au/blogs/guido/2016/09/22/xgboost-windows-x64-binaries-for-download /][1]
- пожалуйста, используйте приведенный ниже код, чтобы получить необходимый скрытый импорт (данные и двоичные файлы должны быть пустыми в случае xgboost)
from PyInstaller.utils.hooks import collect_all
и добавьте его в файлы .spec.
datas, binaries, hiddenimports = collect_all("xgboost")
удачи