Как создать .exe с помощью pyinstaller с кодом, использующим xgboost

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

  1. пожалуйста, используйте приведенный ниже код, чтобы получить необходимый скрытый импорт (данные и двоичные файлы должны быть пустыми в случае xgboost)
    from PyInstaller.utils.hooks import collect_all
    datas, binaries, hiddenimports = collect_all("xgboost")
    и добавьте его в файлы .spec.

удачи