簡體   English   中英

Pyinstaller和sklearn.ensemble:'ModuleNotFoundError:沒有名為'sklearn.neighbors.quad_tree'的模塊[2760]'

[英]Pyinstaller and sklearn.ensemble: 'ModuleNotFoundError: No module named 'sklearn.neighbors.quad_tree' [2760]'

我在PyQt5中編寫了一個GUI,其中包含from sklearn.ensemble import RandomForestClassifier的行。

根據這個答案的建議,在\\Anaconda3\\Lib\\site-packages\\PyInstaller\\hooks ,我添加了一個名為hook-pandas.py的文件,其中包含以下內容:

hiddenimports = ['pandas._libs.tslibs.timedeltas', 'sklearn.neighbors.typedefs']

之后,我嘗試在Anaconda Prompt中運行pyinstaller -F visual_vitals.py --hidden-import sklearn.neighbors.typedefs

但是,我收到錯誤RecursionError: maximum recursion depth exceeded

另一方面,如果我只運行`pyinstaller visual_vitals.py'

然后.exe構建正確,當我嘗試運行它時,我得到消息modulenotfounderror: no module named 'sklearn.neighbors.quad_tree'

我該怎么辦?

請注意,如果我使用支持向量分類器而不是隨機林,問題就會消失,因此問題是特定於此分類器而不是整個sklearn

我遇到了與sklearn和pyinstaller相同的問題。

以下是我如何解決它:

1.)使用命令:

> pyi-makespec -F visual_vitals.py

2.)這將按名稱vitals.spec創建一個文件

3.)查找行

> hidden imports=[]

在spec文件中。

替換為

> hiddenimports = ['pandas._libs.tslibs.timedeltas',
>                  'sklearn.neighbors.typedefs']

4.)添加這兩行以增加spec文件開頭的遞歸限制

> import sys 
> 
> sys.setrecursionlimit(5000)

5.)運行:

> pyinstaller visual_vitals.spec

希望這可以幫助任何人

`ModuleNotFoundError: No module named 'sklearn.*'`

`ModuleNotFoundError: No module named 'h5py.*'`

在構建pyinstaller期間或之后

例如,如果您收到h5py的錯誤

運行pyinstaller myscript.py后,會生成一個myscript.spec

進入myscript.spec

# -*- mode: python ; coding: utf-8 -*-

block_cipher = None

a = Analysis(['myscript.py'],
         binaries=None,
         datas=[],
         hiddenimports=[],
         hookspath=[],
         runtime_hooks=[],
         excludes=[],
         win_no_prefer_redirects=False,
         win_private_assemblies=False,
         cipher=None)
# ... rest of a file untouched

from PyInstaller.utils.hooks import collect_submodules

hidden_imports = collect_submodules('h5py')

hiddenimports=hidden_imports,

像這樣

# -*- mode: python ; coding: utf-8 -*-

block_cipher = None

from PyInstaller.utils.hooks import collect_submodules

hidden_imports = collect_submodules('h5py')

a = Analysis(['myscript.py'],
         binaries=None,
         datas=[],
         hiddenimports=hidden_imports,
         hookspath=[],
         runtime_hooks=[],
         excludes=[],
         win_no_prefer_redirects=False,
         win_private_assemblies=False,
         cipher=None)
# ... rest of a file untouched

然后保存myscript.spec並運行命令pyinstaller myscript.spec

感謝9dogs Pyinstaller創建的exe文件無法加載keras nn模型

暫無
暫無

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

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