我在pyqt5中写了一个GUI,其中包括该行 from sklearn.ensemble import RandomForestClassifier
。
按照此答案的建议,在Anaconda3Libsite-packagesPyInstallerhooks
中,我添加了一个名为hook-pandas.py
的文件,其中包含以下内容:
hiddenimports = ['pandas._libs.tslibs.timedeltas',
'sklearn.neighbors.typedefs']
之后,我尝试了运行 pyinstaller -F visual_vitals.py --hidden-import sklearn.neighbors.typedefs
在Anaconda提示中。
但是,我有错误 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。(这将通过名称vital.spec
创建一个文件3.(找到
的行> hidden imports=[]
在规格文件中。
用
替换> hiddenimports = ['pandas._libs.tslibs.timedeltas',
> 'sklearn.neighbors.typedefs']
4.(添加这两条线以增加规格文件开始时的递归限制
> 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模型