jupyter notebook DLL load failed 지정된 프로시저를 찾을 수 없습니다

 

 

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

 

아나콘다 재설치를 통해 파이썬 업그레이드(3.6 -> 3.7)를 시도했다. 모든 것이 잘 흘러갔지만, seaborn을 import하는 단계에서 import error를 마주하게 되었다. 에러 메시지는 항상 설렌다.

 

 

 

 

 

위와 같은 오류 메시지는 사라져서 다른 패키지(numpy, matplotlib 등)들과 seaborn을 함께 import해서 오류난 메지지가 아래와 같다.

ImportError                               Traceback (most recent call last)
<ipython-input-2-d2e7a3f2c9b4> in <module>
      2 import numpy as np
      3 import matplotlib.pyplot as plt
----> 4 import seaborn as sns
      5 get_ipython().run_line_magic('matplotlib', 'inline')

~\Anaconda3\lib\site-packages\seaborn\__init__.py in <module>
      4 
      5 # Import seaborn objects
----> 6 from .rcmod import *
      7 from .utils import *
      8 from .palettes import *

~\Anaconda3\lib\site-packages\seaborn\rcmod.py in <module>
      3 import functools
      4 import matplotlib as mpl
----> 5 from . import palettes, _orig_rc_params
      6 
      7 

~\Anaconda3\lib\site-packages\seaborn\palettes.py in <module>
     10 from .external.six.moves import range
     11 
---> 12 from .utils import desaturate, set_hls_values, get_color_cycle
     13 from .colors import xkcd_rgb, crayons
     14 

~\Anaconda3\lib\site-packages\seaborn\utils.py in <module>
      5 
      6 import numpy as np
----> 7 from scipy import stats
      8 import pandas as pd
      9 import matplotlib as mpl

~\Anaconda3\lib\site-packages\scipy\stats\__init__.py in <module>
    377 from __future__ import division, print_function, absolute_import
    378 
--> 379 from .stats import *
    380 from .distributions import *
    381 from .morestats import *

~\Anaconda3\lib\site-packages\scipy\stats\stats.py in <module>
    180 import scipy.special as special
    181 from scipy import linalg
--> 182 from . import distributions
    183 from . import mstats_basic
    184 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>
     22 
     23 # for root finding for discrete distribution ppf, and max likelihood estimation
---> 24 from scipy import optimize
     25 
     26 # for functions of continuous distributions (e.g. moments, entropy, cdf)

~\Anaconda3\lib\site-packages\scipy\optimize\__init__.py in <module>
    389 
    390 from .optimize import *
--> 391 from ._minimize import *
    392 from ._root import *
    393 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: 지정된 프로시저를 찾을 수 없습니다.

 

구글과 stack overflow에 많은 검색을 해서 다음과 같은 솔루션을 발견했지만 모두 실패했다.

- 아나콘다 삭제 후 재설치

- 아나콘다 재설치 시 관리자 권한으로 실행

- 커맨드 창에서 seaborn 삭제 및 재설치 (conda로 하기, pip으로 하기)

- 환경변수에 path 추가하기

- 아나콘다 홈페이지에서 seaborn 검색해서 DLL 파일 다운로드 받아  내 컴에 복사하기

- 등등등

 

 

위 많은 방법들이 모두 실패했다.

 

한 가지 재미있는 이상한 현상은 내가 원하는 폴더에서 jupyter notebook을 실행하면 seaborn import error가 발생하는데, "시작 - Anaconda3 - Jupyter Notebook(Anaconda3)"를 관리자 권한으로 실행하면 seaborn import error가 나타나지 않았다. 그래서 권한 쪽 문제라고 생각하고 시간을 낭비했다.

 

 

해결방법은 numpy, scipy 삭제 후 재설치였다.

사실 위 import error 메시지를 잘 살펴보면 scipy에 뭔가 문제가 있음이 나타난다. 에러 메시지가 무슨 말인지 잘 모르겠지만 유난히 scipy 관련 내용이 많다.

 

---> 7 from scipy import stats
---> 24 from scipy import optimize
---> 4 from scipy.sparse.linalg import LinearOperator


scipy 재설치를 권장하는 솔루션을 제시한 사람이 numpy도 함께 해줄 것을 권장했다.

cmd 창에서 다음의 방법으로 numpy와 scipy를 삭제 및 재설치할 수 있다.

 

 

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

 

삭제할 때 --force 옵션의 역할은 다음과 같다. "Forces removal of a package without removing packages that depend on it. Using this option will usually leave your environment in a broken and inconsistent state"

 

-출처 : https://stackoverflow.com/questions/38459186/conda-uninstall-one-package-and-one-package-only

 

 

 

 

numpy와 scipy를 삭제하고 다시 설치 후 두근거리는 마음으로 seaborn을 import 해보았다.

 

 

성공했다. 고생했어. 토닥토닥. 

2020.01.05. 코리.

 

 

 

참고한 사이트

- https://stackoverflow.com/questions/54083514/how-to-fix-importerror-dll-load-failed-the-specified-procedure-could-not-be-f

- https://stackoverflow.com/questions/54957065/importerror-dll-load-failed-import-seaborn-failed-only-works-with-conda-ro

- https://stackoverflow.com/questions/55641510/seaborn-import-as-sns-importerror-dll-load-failed-the-specified-module-coul

- https://community.powerbi.com/t5/Desktop/Error-with-SEABORN/td-p/690652

+ Recent posts