Python 识别Jupyter导入声明中缺少的DLL

Python 识别Jupyter导入声明中缺少的DLL,python,scikit-learn,scipy,jupyter,Python,Scikit Learn,Scipy,Jupyter,只有在Jupyter中运行时,scikit learn才会抛出一个错误,表示它找不到DLL。这个问题有几个答案,没有一个对我有效,但在大多数情况下,解决方案是手动复制DLL。如何从堆栈跟踪中判断下面缺少哪个DLL 我使用Miniconda 3安装库,scikit learn在PyCharm IDE中可以完美地工作 from sklearn.ensemble import RandomForestClassifier --------------------------------------

只有在Jupyter中运行时,scikit learn才会抛出一个错误,表示它找不到DLL。这个问题有几个答案,没有一个对我有效,但在大多数情况下,解决方案是手动复制DLL。如何从堆栈跟踪中判断下面缺少哪个DLL

我使用Miniconda 3安装库,scikit learn在PyCharm IDE中可以完美地工作

from sklearn.ensemble import RandomForestClassifier


---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-1-019d114f89a0> in <module>
----> 1 from sklearn.ensemble import RandomForestClassifier

~\Miniconda3\lib\site-packages\sklearn\__init__.py in <module>
     74 else:
     75     from . import __check_build
---> 76     from .base import clone
     77     from .utils._show_versions import show_versions
     78 

~\Miniconda3\lib\site-packages\sklearn\base.py in <module>
     14 
     15 from . import __version__
---> 16 from .utils import _IS_32BIT
     17 
     18 _DEFAULT_TAGS = {

~\Miniconda3\lib\site-packages\sklearn\utils\__init__.py in <module>
     18 from ..exceptions import DataConversionWarning
     19 from .deprecation import deprecated
---> 20 from .validation import (as_float_array,
     21                          assert_all_finite,
     22                          check_random_state, column_or_1d, check_array,

~\Miniconda3\lib\site-packages\sklearn\utils\validation.py in <module>
     19 from numpy.core.numeric import ComplexWarning
     20 
---> 21 from .fixes import _object_dtype_isnan
     22 from .. import get_config as _get_config
     23 from ..exceptions import NonBLASDotWarning

~\Miniconda3\lib\site-packages\sklearn\utils\fixes.py in <module>
     16 import scipy.sparse as sp
     17 import scipy
---> 18 from scipy.sparse.linalg import lsqr as sparse_lsqr  # noqa
     19 
     20 

~\Miniconda3\lib\site-packages\scipy\sparse\linalg\__init__.py in <module>
    114 from .dsolve import *
    115 from .interface import *
--> 116 from .eigen import *
    117 from .matfuncs import *
    118 from ._onenormest import *

~\Miniconda3\lib\site-packages\scipy\sparse\linalg\eigen\__init__.py in <module>
      9 from __future__ import division, print_function, absolute_import
     10 
---> 11 from .arpack import *
     12 from .lobpcg import *
     13 

~\Miniconda3\lib\site-packages\scipy\sparse\linalg\eigen\arpack\__init__.py in <module>
     20 from __future__ import division, print_function, absolute_import
     21 
---> 22 from .arpack import *

~\Miniconda3\lib\site-packages\scipy\sparse\linalg\eigen\arpack\arpack.py in <module>
     43 __all__ = ['eigs', 'eigsh', 'svds', 'ArpackError', 'ArpackNoConvergence']
     44 
---> 45 from . import _arpack
     46 import numpy as np
     47 import warnings

ImportError: DLL load failed: The specified procedure could not be found.
来自sklearn.employ的

---------------------------------------------------------------------------
ImportError回溯(最近一次呼叫最后一次)
在里面
---->1来自sklearn.employ导入随机林分类器
~\Miniconda3\lib\site packages\sklearn\\uuuuuu init\uuuuuuuuuuuu.py in
74.其他:
75来自。导入检查生成
--->76从基本导入克隆
77从.utils.\u显示\u版本导入显示\u版本
78
中的~\Miniconda3\lib\site packages\sklearn\base.py
14
15从。导入版本__
--->16 from.utils导入为32位
17
18 \u默认\u标记={
~\Miniconda3\lib\site packages\sklearn\utils\\uuuuuu init\uuuuuuuuuu.py in
18从..异常导入数据转换警告
19.不推荐导入不推荐导入
--->20来自验证导入(作为浮点数组,
21断言所有有限,
22检查\u随机\u状态,列\u或\u 1d,检查\u数组,
中的~\Miniconda3\lib\site packages\sklearn\utils\validation.py
19来自numpy.core.numeric import ComplexWarning
20
--->21 from.fixes import\u object\u dtype\u isnan
22 from..import get\u config as\u get\u config
23从..异常导入非警告
中的~\Miniconda3\lib\site packages\sklearn\utils\fixes.py
16导入scipy.sparse作为sp
17进口西皮
--->18从scipy.sparse.linalg导入lsqr作为稀疏lsqr#noqa
19
20
中的~\Miniconda3\lib\site packages\scipy\sparse\linalg\\uuuuuu init\uuuuuuuu.py
114从dsolve导入*
115.接口导入*
-->116.本征输入*
117.从matfuncs导入*
118自。_ONERMOSTIMPORT*
中的~\Miniconda3\lib\site packages\scipy\sparse\linalg\eigen\\uuuuuuu init\uuuuuuuuu.py
9来自未来导入部门,打印功能,绝对导入
10
--->11.从arpack导入*
12.lobpcg导入*
13
中的~\Miniconda3\lib\site packages\scipy\sparse\linalg\eigen\arpack\\uuuuu init\uuuuu.py
20来自未来导入部门,打印功能,绝对导入
21
--->22.从arpack导入*
中的~\Miniconda3\lib\site packages\scipy\sparse\linalg\eigen\arpack\arpack.py
43 uuu all uuu=['EIG'、'eigsh'、'svds'、'ArpackError'、'ARPACKNOCONVERCENCE']
44
--->45.进口_arpack
46作为np的进口numpy
47进口警告
ImportError:DLL加载失败:找不到指定的过程。

关于堆栈跟踪,使用try-except块封装整个代码。下面的代码打印出脚本名称、错误代码行号和错误类型。str(e)允许深入跟踪堆栈

import os, sys

try: 
    # Place your code here

except Exception as e:  
    exc_type, exc_obj, exc_tb = sys.exc_info()
    fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
    print("Exception occurred while processing: {}, line {}, {}".format(fname, exc_tb.tb_lineno, exc_type))
    print("Exception occurred: "+ str(e))

看起来scipy安装不完整。
arpack
引用了一个快速编译的数学库。这是一个
(迷你版)conda
问题,不是一个
jupyter
问题。是的,当我从
scipy
导入时,我得到了同样的错误,不仅仅是从
sklearn
得到的。我尝试了
conda install scipy--强制重新安装
,但问题仍然存在。我还在Google上搜索了
arpack DLL not
以查看是否可以从某个地方复制DLL,但我运气不佳。a有什么建议吗?看起来您正在将包安装到miniconda的基本环境中?请尝试创建一个新环境。
conda create-n learn python scipy jupyter
,然后激活该环境并查看是否出现相同错误。
conda activate learn
。在新环境中重新创建所有内容
base2而不是使用
base
解决了这个问题。这就是我在Windows路径中的路径:
C:\users\pgx\miniconda3\Library\bin;C:\users\pgx\miniconda3\envs\base2;C:\users\pgx\miniconda3\miniconda3;C:\users\pgsch\miniconda3\Scripts
。我有了第一个新环境
base2
文件夹,然后是默认的miniconda文件夹,不确定这是否正确。我从sklearn.employ import random forestClassifier运行行
,找到
scipy\extra dll\lib_arpack-.3eacc44r6uryomhqmyvckqcom2qibwu.gfortran-win_amd64.dll