簡體   English   中英

Python Sklearn / Scikit和cx_freeze:模塊“ sklearn.tree._criterion”沒有屬性“ Criterion”

[英]Python Sklearn / Scikit & cx_freeze: module 'sklearn.tree._criterion' has no attribute 'Criterion'

我目前正在嘗試將使用Sklearn模塊的Python應用程序放在獨立的.exe文件中。

我當前的cx_freeze setup.py看起來像這樣:

import os
from cx_Freeze import setup, Executable

base = "Win32GUI"

os.environ['TCL_LIBRARY'] = r'C:\Users\...\AppData\Local\Continuum\anaconda3\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\Users\...\AppData\Local\Continuum\anaconda3\tcl\tk8.6'

executables = [Executable("gui_handler.py", base=base)]

packages = ["idna", "numpy", "sklearn", "nltk", "stop_words", "scipy", "scipy.sparse.csgraph._validation",
            "scipy.spatial.ckdtree", "PyQt5", "imblearn.under_sampling", "imblearn.over_sampling",
            "sklearn.tree._criterion"]

options = {
    'build_exe': {
        "packages": packages,
        "excludes": ["scipy.spatial.cKDTree"],
        "zip_include_packages": ["sklearn", "nltk", "idna"] # PyQt5 zippen verschlechtert die Optik
    },
}

setup(
    name="<any name>",
    options=options,
    version="1.0",
    description='<any description>',
    executables=executables
)

之前運行良好,但是我的應用程序的最新版本使用了模塊imblearn 我認為這會導致此問題(雙擊.exe文件幾秒鍾后出現):

Traceback (most recent call last):
  File "C:\Users\...\AppData\Local\Continuum\anaconda3\lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 14, in run
    module.run()
  File "C:\Users\...\AppData\Local\Continuum\anaconda3\lib\site-packages\cx_Freeze\initscripts\Console.py", line 26, in run
    exec(code, m.__dict__)
  File "gui_handler.py", line 8, in <module>
  File "C:\Users\...\Documents\PycharmProjects\MachineLearning\build\exe.win-amd64-3.6\TextClassification\init_predict.py", line 16, in <module>
    from imblearn.under_sampling import RandomUnderSampler
  File "C:\Users\...\AppData\Local\Continuum\anaconda3\lib\site-packages\imblearn\under_sampling\__init__.py", line 6, in <module>
    from .prototype_generation import ClusterCentroids
  File "C:\Users\...\AppData\Local\Continuum\anaconda3\lib\site-packages\imblearn\under_sampling\prototype_generation\__init__.py", line 6, in <module>
    from .cluster_centroids import ClusterCentroids
  File "C:\Users\...\AppData\Local\Continuum\anaconda3\lib\site-packages\imblearn\under_sampling\prototype_generation\cluster_centroids.py", line 14, in <module>
    from sklearn.cluster import KMeans
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 656, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible
  File "C:\Users\...\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\cluster\__init__.py", line 6, in <module>
    from .spectral import spectral_clustering, SpectralClustering
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 656, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible
  File "C:\Users\...\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\cluster\spectral.py", line 17, in <module>
    from ..manifold import spectral_embedding
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 656, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible
  File "C:\Users\...\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\manifold\__init__.py", line 9, in <module>
    from .t_sne import TSNE
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 656, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible
  File "C:\Users\...\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\manifold\t_sne.py", line 25, in <module>
    from . import _barnes_hut_tsne
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 656, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible
  File "ExtensionLoader_sklearn_manifold__barnes_hut_tsne.py", line 23, in <module>
  File "ExtensionLoader_sklearn_manifold__barnes_hut_tsne.py", line 15, in __bootstrap__
  File "C:\Users\...\AppData\Local\Continuum\anaconda3\lib\imp.py", line 343, in load_dynamic
    return _load(spec)
  File "sklearn\neighbors\quad_tree.pxd", line 54, in init sklearn.manifold._barnes_hut_tsne
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 656, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible
  File "ExtensionLoader_sklearn_neighbors_quad_tree.py", line 23, in <module>
  File "ExtensionLoader_sklearn_neighbors_quad_tree.py", line 15, in __bootstrap__
  File "C:\Users\...\AppData\Local\Continuum\anaconda3\lib\imp.py", line 343, in load_dynamic
    return _load(spec)
  File "sklearn\tree\_criterion.pxd", line 21, in init sklearn.neighbors.quad_tree
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 656, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible
  File "C:\Users\...\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\tree\__init__.py", line 6, in <module>
    from .tree import DecisionTreeClassifier
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 656, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible
  File "C:\Users\...\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\tree\tree.py", line 40, in <module>
    from ._criterion import Criterion
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 656, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible
  File "ExtensionLoader_sklearn_tree__criterion.py", line 23, in <module>
  File "ExtensionLoader_sklearn_tree__criterion.py", line 15, in __bootstrap__
  File "C:\Users\...\AppData\Local\Continuum\anaconda3\lib\imp.py", line 343, in load_dynamic
    return _load(spec)
  File "sklearn\tree\_splitter.pxd", line 34, in init sklearn.tree._criterion
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 656, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible
  File "ExtensionLoader_sklearn_tree__splitter.py", line 23, in <module>
  File "ExtensionLoader_sklearn_tree__splitter.py", line 15, in __bootstrap__
  File "C:\Users\...\AppData\Local\Continuum\anaconda3\lib\imp.py", line 343, in load_dynamic
    return _load(spec)
  File "sklearn\tree\_criterion.pxd", line 21, in init sklearn.tree._splitter
AttributeError: module 'sklearn.tree._criterion' has no attribute 'Criterion'

我查看了sklearn\\tree\\tree.py文件,確實有這個import語句:

from ._criterion import Criterion

同一文件夾包含以下文件:

_criterion.cp36-win_amd64.pyd _splitter.cp36-win_amd64.pyd _tree.cp36-win_amd64.pyd _utils.cp36-win_amd64.pyd

據我所知,這是python模塊文件。

如果我從PyCharm IDE執行該應用程序,則該應用程序運行得很好,因此我要么假設我的程序甚至不需要Criterion模塊 (而cx_freeze只是因為它加載了所有內容而加載了它),所以我沒有收到錯誤消息在運行時。 或者該模塊實際上丟失了。

有什么想法可以解決此問題嗎?

好吧,我自己解決了這個問題。

我剛剛刪除線

zip_include_packages": ["sklearn", "nltk", "idna"]

從我的cx_freeze_setup.py

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM