Python/개발환경 구축

[Jupyter Notebook] sklearn import error(python package import error)

뒷골목프로그래머 2020. 4. 6. 23:11
반응형

안녕하세요. 글쓰는 개발자 입니다.

요즘 저는 데이터 사이언티스트가 되기위해 학습 중인데요. 현재 jupyter notebook을 활용해서 학습 중에 있습니다. 오늘은 numpy를 활용한 선형대수를 학습하는데 몇가지 필요한 package 들을 import해야 했습니다.

 

신기한 것은 Home Directory에서 Jupyter Notebook을 실행하면 문제없이 import 되는 것이 제가 원하는 경로에서 Jupyter Notebook을 실행하고 .ipynb 파일을 생성하면 import가 되지 않는 것이었습니다.

scikit-learn package를 import하자 아래와 같은 error가 나타났습니다.

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-3-b7c74cbf5af0> in <module>
----> 1 import sklearn

~\anaconda3\lib\site-packages\sklearn\__init__.py in <module>
     80     from . import _distributor_init  # noqa: F401
     81     from . import __check_build  # noqa: F401
---> 82     from .base import clone
     83     from .utils._show_versions import show_versions
     84 

~\anaconda3\lib\site-packages\sklearn\base.py in <module>
     18 
     19 from . import __version__
---> 20 from .utils import _IS_32BIT
     21 
     22 _DEFAULT_TAGS = {

~\anaconda3\lib\site-packages\sklearn\utils\__init__.py in <module>
     25 from ..exceptions import DataConversionWarning
     26 from .deprecation import deprecated
---> 27 from .fixes import np_version
     28 from .validation import (as_float_array,
     29                          assert_all_finite,

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

~\anaconda3\lib\site-packages\scipy\stats\__init__.py in <module>
    382 from __future__ import division, print_function, absolute_import
    383 
--> 384 from .stats import *
    385 from .distributions import *
    386 from .morestats import *

~\anaconda3\lib\site-packages\scipy\stats\stats.py in <module>
    183 import scipy.special as special
    184 from scipy import linalg
--> 185 from . import distributions
    186 from . import mstats_basic
    187 from ._stats_mstats_common import (_find_repeats, linregress, theilslopes,

~\anaconda3\lib\site-packages\scipy\stats\distributions.py in <module>
      8 from __future__ import division, print_function, absolute_import
      9 
---> 10 from ._distn_infrastructure import (entropy, rv_discrete, rv_continuous,
     11                                     rv_frozen)
     12 

~\anaconda3\lib\site-packages\scipy\stats\_distn_infrastructure.py in <module>
     23 
     24 # for root finding for discrete distribution ppf, and max likelihood estimation
---> 25 from scipy import optimize
     26 
     27 # for functions of continuous distributions (e.g. moments, entropy, cdf)

~\anaconda3\lib\site-packages\scipy\optimize\__init__.py in <module>
    388 
    389 from .optimize import *
--> 390 from ._minimize import *
    391 from ._root import *
    392 from ._root_scalar import *

~\anaconda3\lib\site-packages\scipy\optimize\_minimize.py in <module>
     28 from ._trustregion_krylov import _minimize_trust_krylov
     29 from ._trustregion_exact import _minimize_trustregion_exact
---> 30 from ._trustregion_constr import _minimize_trustregion_constr
     31 
     32 # constrained minimization

~\anaconda3\lib\site-packages\scipy\optimize\_trustregion_constr\__init__.py in <module>
      2 
      3 
----> 4 from .minimize_trustregion_constr import _minimize_trustregion_constr
      5 
      6 __all__ = ['_minimize_trustregion_constr']

~\anaconda3\lib\site-packages\scipy\optimize\_trustregion_constr\minimize_trustregion_constr.py in <module>
      2 import time
      3 import numpy as np
----> 4 from scipy.sparse.linalg import LinearOperator
      5 from .._differentiable_functions import VectorFunction
      6 from .._constraints import (

~\anaconda3\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 *

~\anaconda3\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 

~\anaconda3\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 *

~\anaconda3\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: 지정된 프로시저를 찾을 수 없습니다.

 

그리하여, 저는 아래처럼 몇가지 가설을 세웠으나 하나도 성공하지 못했습니다.

  • 홈 디렉토리에서 실행되는 것으로 보아 환경변수 설정 문제일 것이다.
    • 구글 검색 : anaconda 환경변수, anaconda path, jupyter notebook path error 등
  • package가 제대로 설치되지 않은 것이다.
    • anaconda prompt에서 conda list, pip list 실행 후 확인
    • DLL load failed: 지정된 프로시저를 찾을 수 없습니다. 로 구글링

 

그러다 구글링을 3시간 정도 하다가 저와 비슷한 현상을 겪으신 분의 포스팅을 보았습니다. 위 에러코드 내용을 보면, scipy package관련하여 몇 가지 언급이 있는데요. 이를 해결하기 위해

$ conda remove --force scipy, numpy
$ pip install scipy
$ pip install numpy

와 같은 명령어를 입력했습니다. 그리고 jupyter notebook을 모두 끄고 브라우저도 종료한 후 다시 실행해본 결과 에러가 말씀히 없어지고 성공적으로 import 되었습니다.

sklearn import 성공

참고 : https://corytips.tistory.com/181#comment11845119

 

Python - Seaborn Import Error (DDL load failed)

파이썬을 3.6에서 3.7로 업그레이드하는 과정에서 seaborn import error가 발생하여 오랜 시간 동안 고생했다. 수많은 검색을 통해 아나콘다를 지우고 재설치하고를 반복하며 헤맸는데, 에러 메시지에 답이 있었..

corytips.tistory.com

 

반응형