Pyinstaller exe не удалось загрузить/предсказать рассол.дата из-за «Нет модуля с именем «xgboost»».[В spyder/python3.7 импорт консоли xgb найден/ работает]

#python #module #pyinstaller #xgboost

Вопрос:

Я создал новую среду с необходимым модулем импорта conda (включая xgboost), работающим в режиме консоли/spyder5 (python3.7). Структура папок следующая V: Текущая папка

  • main.py
  • ref_files (с изображением/pickle.data/joblib.dat для функции вызова прогноза в main.py)

При создании pyinstaller exe,приведенные ниже сведения добавляются в файл спецификации [для ref_files]

импорт sys sys.setrecursionlimit(5000)

block_cipher = Нет

 added_files = [("Ref_files", "Ref_files")]

a = Analysis(['main.py'],
             pathex=['V:\Current_folder'],
             binaries=[],
             datas=added_files,
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          [],
          name='main.py',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          upx_exclude=[],
          runtime_tmpdir=None,
          console=True )
 

Только маринованный огурец.файл dat(из xgboost) загружается для main.py не выполняется из-за «модуль xgbboost не найден».
Пробовал с

 1.hidden_files = [('xgboost')]
2.hidden_files = [('env/xgboost_lib_path')]
 

… также указан путь к файлу dll/ВЕРСИИ.
Не могли бы вы, пожалуйста, подсказать, есть ли какие-либо изменения или исправления в dll/exe модуля xgboost ??

Комментарии:

1. Windows 10, Python3.7,xgboost.__версия__(установка 1.4.0 conda)

Ответ №1:

 Finally I have solved the issue of XGBoost module 

1.  copying xgboost module file from anaconda/ env installation folder to 
     main_script.py folder
     [C:Anaconda3envsnewLibrarymingw-w64bin] : 
     “VERSION” amp; “xgboost.dll”
               
2.  Include binary file in spec file:   

    binaries=[('xgboost.dll','Library\mingw-w64\bin\'), ('VERSION', 'xgboost\')],
             
 
3.  Included “import xgboost.sklearn” in main_scipt.py

Now it is working fine. Pyinstaller single.exe 

Similary "sklearn.ensemble.forest module not found" issue is resolved by incorporating 
 the below imports module in main script.py as below:

import sklearn
import sklearn.utils._cython_blas
import sklearn.ensemble._forest
import sklearn.neighbors.typedefs
import sklearn.neighbors.quad_tree
import sklearn.tree
import sklearn.tree._utils