繁体   English   中英

安装程序; ModuleNotFoundError:没有名为“sklearn.utils._cython_blas”的模块

[英]Pyinstaller ; ModuleNotFoundError: No module named 'sklearn.utils._cython_blas'

我的 python 项目有这个导入列表:

import pandas as pd
import time
import sqlalchemy
from sklearn.ensemble import RandomForestClassifier
import pandas as pd
import numpy as np
from sqlalchemy import Column, String, Float, Integer, SmallInteger, MetaData
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

这个用于分发项目的规范文件:

import sys
sys.setrecursionlimit(5000)

block_cipher = None


a = Analysis(['DataManager.py'],
             pathex=['E:\\ForexPredictor'],
             binaries=[],
             datas=[],
             hiddenimports=['cython','pymysql','pandas._libs.tslibs.timedeltas','sklearn.neighbors.typedefs','sklearn.utils.typedefs'],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          [],
          exclude_binaries=True,
          name='DataManager',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          console=True )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=False,
               upx=True,
               name='DataManager')

我使用这个命令来制作项目的 exe 文件:

pyinstaller Datamanager.spec

但是当我运行exe文件时,它给出了这个错误:

ModuleNotFoundError: No module named 'sklearn.utils._cython_blas'

我应该向隐藏的导入部分添加哪些其他内容?

PyInstaller 对每个 Python 模块使用钩子机制,但有时会漏掉一些内部包,因此需要手动提供。 您可以使用--hidden-import添加sklearn缺少的模块。

pyinstaller -F --hidden-import="sklearn.utils._cython_blas" --hidden-import="sklearn.neighbors.typedefs" --hidden-import="sklearn.neighbors.quad_tree" --hidden-import="sklearn.tree._utils" Datamanager.py

添加

import sklearn.utils._cython_blas

有可能

import sklearn.neighbors.typedefs
import sklearn.neighbors.quad_tree
import sklearn.tree
import sklearn.tree._utils

到您的代码。

在我执行以下代码后,它适用于我的代码:

pyinstaller --hidden-import="sklearn.utils._cython_blas" --hidden-import="sklearn.neighbors.typedefs" --hidden-import="sklearn.neighbors.quad_tree" --hidden-import="sklearn.tree ._utils" --hidden-import="sklearn.neighbors._typedefs" --hidden-import="sklearn.utils._weight_vector" --hidden-import="sklearn.neighbors._quad_tree" namepythonfile.py

尝试将所有模块添加到隐藏导入代码中即可成功

您是否尝试阅读有关使用 .spec 文件的文档? https://pyinstaller.readthedocs.io/en/stable/spec-files.html#using-spec-files

我不知道这是否是问题所在,但是在用于创建 .exe 文件的命令中您的 *.py 文件在哪里? 据我所知,您必须为 pyinstaller 提供一个 .py 文件才能创建程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM