I created an exe file of my large python script using the following command -
pyinstaller gui_final.py --onefile --hidden-import=sklearn --hidden-import=ipaddress --hidden-import=PIL --hidden-import=pickle --hidden-import=shutil --hidden-import=joblib
The exe file works fine until I load my decision tree model file (dtree.joblib) using JOBLIB.
clf = joblib.load("dtree.joblib")
The following error pops up - Here is the complete error in the terminal:
ModuleNotFoundError: No module named 'sklearn.ensemble._weight_boosting'
I tried updating the hidden_imports by adding just sklearn.ensemble
and sklearn.ensemble._weight_boostin
later to the spec file of the exe by following steps in this answer. steps also given below
from PyInstaller.utils.hooks import collect_submodules
hidden_imports = collect_submodules('sklearn.ensemble') #('sklearn.ensemble._weight_boosting')
a = Analysis(['gui_final.py'],
binaries=None,
datas=[],
hiddenimports=hidden_imports,
.
.
By running the command:
pyinstaller gui_final.spec
But still got the same ModuleNotFoundError as earlier after running the exe.
I have tried looking at some issues regarding joblib with pyinstaller, but have not found any suitable issues or solutions.
Can anyone suggest steps to make the exe of the script runnable?