从sklearn.cluster导入DBSCAN时遇到pyinstaller错误的问题

时间:2019-08-03 19:09:05

标签: python scikit-learn pyinstaller

我一直在使用PyQt5制作一个GUI应用程序,我正在尝试使其成为一个独立的应用程序。我见过人们尝试执行此操作的最常见方法是使用pyinstaller。对我造成问题的导入语句是“ from sklearn.cluster import DBSCAN”。我认为这是导致问题的这一行的原因,是因为当我从命令提示符启动应用程序时,它告诉我该行发生了错误。另外,当我注释掉该行并尝试将python文件制作为实际运行的应用程序时。我不确定导致问题的原因,因此我将尝试包括尽可能多的信息,包括尝试解决问题的尝试。

在anaconda powershell提示符下对文件运行pyinstaller时输出

Anaconda Powershell Output 1

Anaconda Powershell Output 2

Anaconda Powershell Output 3

Anaconda Powershell Output 4

Anaconda Powershell Output 5

sklearn文件夹位于dist内容内

sklearn folder

Cluster folder contents within sklearn

运行应用程序时出现命令提示符错误

Command Prompt Error 1

Command Prompt Error 2

Command Prompt Error 3

尝试解决此问题

尝试1:Stackoverflow answer 1

我尝试遵循chris的建议,并使用他说要添加的代码制作了钩子文件。当我尝试运行pyinstaller时,它会导致相同的错误以及我在命令提示符下粘贴的错误。

尝试2:Data science blogpost answer

我遵循了scikit-learn部分中的说明。不幸的是,它导致的错误与命令提示符下的错误相同。

尝试3:Stackover answer 2

尝试按照Vaibhav的回答进行操作,但在命令提示符下导致相同的错误。

我的挂钩文件

hook-scipy

import os
import glob
from PyInstaller.utils.hooks import get_module_file_attribute
from PyInstaller.compat import is_win

binaries = []

# package the DLL bundle that official scipy wheels for Windows ship

if is_win:
    dll_glob = os.path.join(os.path.dirname(
        get_module_file_attribute('scipy')), 'extra-dll', "*.dll")
    if glob.glob(dll_glob):
        binaries.append((dll_glob, "."))

# collect library-wide utility extension modules

hiddenimports = ['scipy._lib.%s' % m for m in [
'messagestream', "_ccallback_c", "_fpumode"]]

hook-sklearn.metrics.cluster

from PyInstaller.utils.hooks import collect_data_files


hiddenimports = ['sklearn.utils.sparsetools._graph_validation',
             'sklearn.utils.sparsetools._graph_tools',
             'sklearn.utils.lgamma',
             'sklearn.utils.weight_vector',
     'sklearn.utils.fixes',
         'sklearn.utils.extmath',
         'sklearn.metrics.ranking',
         'sklearn.neighbors',
         'sklearn.neighbors.typedefs',
         'sklearn.neighbors.quad_tree']

datas = collect_data_files('sklearn')

hook-sklearn

from PyInstaller.utils.hooks import collect_submodules
hiddenimports = collect_submodules('sklearn')

hook-sklearn.tree

hiddenimports = ['sklearn.tree._utils']

这是我目前拥有的挂钩文件。它们保存在以下位置:

C:\ Users \ Admin \ Miniconda3 \ pkgs \ pyinstaller-3.4-py37h2a8f88b_1 \ Lib \ site-packages \ PyInstaller \ hooks

我已经坚持了一段时间。如果有人可以告诉我如何解决此错误,我将不胜感激。如果您需要有关我一直在处理的问题的更多信息,请告诉我。

0 个答案:

没有答案