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://community.powerbi.com/t5/Desktop/Error-with-SEABORN/td-p/690652
'Bigdata_tips' 카테고리의 다른 글
[python] 윈도우에서 카이(Khaiii) 설치하기_01.리눅스 설치 (0) | 2020.04.06 |
---|---|
우분투에서 구글 드라이브 파일 다운로드 받기 (0) | 2020.01.06 |
파이썬 - 할당연산자 (=, +=, -=, *=, /=, %=, **=, //=) (0) | 2018.09.11 |
파이썬 - 자료구조(리스트, 튜플, 사전, 집합) (0) | 2018.09.07 |
파이썬-자료형(숫자, 문자, 변수, 자료형변환) (0) | 2018.09.05 |