PyInstaller: a module is not included into --onefile, but works fine with --onedir

后端 未结 2 647
执念已碎
执念已碎 2021-02-05 17:59

I\'m using PyInstaller to bundle my application into one .exe file. The problem is that it works fine with --onedir option, but can\'t find a module when built with --onefile.

相关标签:
2条回答
  • 2021-02-05 18:56

    just import following packages in the script which is going to convert into exe file

     import xgboost
     import sklearn.ensemble
     import sklearn.tree
     import pickle
     import pandas as pd
     import sklearn.neighbors.typedefs
     import sklearn.neighbors.quad_tree
     import sklearn.tree._utils
     import cython
     import sklearn
     import sklearn.utils._cython_blas
     import numpy as np
     import joblib
     from sklearn.preprocessing import StandardScaler
    

    this help me in solving this issue.

    0 讨论(0)
  • 2021-02-05 18:58

    I had the same error. The solution is to create a hook for sklearn. Generally, u need to create a hook file like this

    hiddenimports = ['sklearn.utils.sparsetools._graph_validation'] 
    

    and save this in a file with name hook-modulename.py in the same folder. But this will import only _graph_validation. This might lead to error for another module. Best to import all the submodules in a package by

    from hookutils import collect_submodules
    hiddenimports = collect_submodules('sklearn') 
    

    and save it to a hook file in the same folder. For me, I had to create 2 hook file. one for sklearn and one for scipy.

    from hookutils import collect_submodules
    hiddenimports = collect_submodules('scipy') 
    

    after saving them I used below command to run

    pyinstaller --additional-hooks-dir=. myfile.py

    for better understanding follow this link.

    0 讨论(0)
提交回复
热议问题