공모전/데이터분석

주피터 노트북 설치 오류 해결 방법

진강이 2024. 1. 1. 21:37

아나콘다를 설치하고 주피터 노트북을 실행하려고 하면 다음과 같은 화면이 뜨면서 실행이 되지 않았다.

주피터 노트북 launch error

Traceback (most recent call last):
File "C:\Users\lyl89\anaconda3\Lib\site-packages\notebook\traittypes.py", line 235, in _resolve_classes
klass = self._resolve_string(klass)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\lyl89\AppData\Roaming\Python\Python311\site-packages\traitlets\traitlets.py", line 2018, in _resolve_string
return import_item(string)
^^^^^^^^^^^^^^^^^^^
File "C:\Users\lyl89\AppData\Roaming\Python\Python311\site-packages\traitlets\utils\importstring.py", line 31, in import_item
module = __import__(package, fromlist=[obj])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'jupyter_server.contents'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\lyl89\anaconda3\Scripts\jupyter-notebook-script.py", line 10, in
sys.exit(main())
^^^^^^
File "C:\Users\lyl89\AppData\Roaming\Python\Python311\site-packages\jupyter_core\application.py", line 280, in launch_instance
super().launch_instance(argv=argv, **kwargs)
File "C:\Users\lyl89\AppData\Roaming\Python\Python311\site-packages\traitlets\config\application.py", line 1051, in launch_instance
app = cls.instance(**kwargs)
^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\lyl89\AppData\Roaming\Python\Python311\site-packages\traitlets\config\configurable.py", line 583, in instance
inst = cls(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^
File "C:\Users\lyl89\AppData\Roaming\Python\Python311\site-packages\traitlets\traitlets.py", line 1294, in __new__
inst.setup_instance(*args, **kwargs)
File "C:\Users\lyl89\AppData\Roaming\Python\Python311\site-packages\traitlets\traitlets.py", line 1337, in setup_instance
super(HasTraits, self).setup_instance(*args, **kwargs)
File "C:\Users\lyl89\AppData\Roaming\Python\Python311\site-packages\traitlets\traitlets.py", line 1313, in setup_instance
init(self)
File "C:\Users\lyl89\anaconda3\Lib\site-packages\notebook\traittypes.py", line 226, in instance_init
self._resolve_classes()
File "C:\Users\lyl89\anaconda3\Lib\site-packages\notebook\traittypes.py", line 238, in _resolve_classes
warn(f"{klass} is not importable. Is it installed?", ImportWarning)
TypeError: warn() missing 1 required keyword-only argument: 'stacklevel'

 

오류 코드는 다음과 같다.

 

이 오류 해결하기 위해 아나콘다도 여러 번 깔고 지웠다 하고 애를 좀 먹었는데 어찌어찌 해결은 됐다,,ㅎㅎ 

실행 오류 있으신 분들 버전 차이로 인한 호환성 문제가 많을 것 같은데 일단 내가 문제를 해결하기 위해 해 본 일련의 과정들을 소개하겠다.(하나씩 따라하다보면 얻어걸리는 느낌으로 해결될수도..?)

 

메시지를 보면  jupyter_server.contents 모듈을 찾지 못해 발생했다고 한다. 또한 warn() 함수 호출에서 필요한 stacklevel 키워드가 누락되어 있다고 한다. 

 

일단 문제를 해결하기 위해 아나콘다 prompt를 키고 다음과 같은 과정을 거쳤다. 

1. jupyter_server 모듈 설치

pip install jupyter_server


2. 관련된 패키지들 업데이트

pip install --upgrade jupyter_core traitlets


3. 파이썬과 패키지 버전 확인
호환 가능한 파이썬 버전을 사용하고 있는지 확인해야 한다. 
'traitlets'의 버전이 'jupyter_server.contents'와 호환되지 않을 수 있다. 버전을 확인하고 하나를 다운그레이드하거나 업그레이드하는 것이 도움이 될 수 있다.

pip show traitlets
pip show jupyter_server

 

 

그럼 이렇게 'traitlets' 버전과 'jupyter_server.contents' 버전이 나온다. 

나는 둘 다 최신 버전이었다. 뭐가 문젤까ㅠ

 

친구가 jupyter_server.contents 버전은 똑같은데 traitlets 5.7.1이라고 해서(난 5.14.0)  5.10.0 이상 버전에서 문제가 있나 싶어서 uninstall 하고 5.9.0으로 다운그레이드 해봤다.

pip uninstall traitlets
pip install traitlets==5.9.0

 

 

이렇게 했을 때 되는 분들도 있을 거다. 나는 왜 안 됐지..?

 

결론적으로 내가 겪은 오류는 현재 설치된 모든 패키지를 고려하지 않아 생기는 충돌이 문제였다. 특히 아나콘다 네비게이터에서 잘못 눌러 설치한 spyder 패키지에서 요구하는 jedi 패키지의 버전이 현재 설치된 것과 호환되지 않아 발생했다.

 

jedi 버전 충돌로 생긴 오류는 다음 방법 중 하나를 선택하여 풀면 된다.

 

1. Spyder 업그레이드:
spyder 패키지가 요구하는 jedi 버전과 호환되는 최신 버전으로 Spyder를 업그레이드한다. 

pip install --upgrade spyder


2. jedi 다운그레이드:


현재 버전의 jedi를 0.19.0 버전으로 다운그레이드할 수도 있다. 하지만 이 경우에는 spyder가 요구하는 버전과의 충돌이 발생할 수 있으니 참고하자.

pip install jedi==0.19.0