[Flask] ImportError: cannot import name 'json' from 'itsdangerous'

강버섯·2022년 3월 3일
1

FLASK🧪

목록 보기
6/7

👉 발단

flask run을 이용해서 flask app을 실행시키려고 했는데 ImportError: cannot import name 'json' from 'itsdangerous' 라는 에러가 발생하였다.
뭔일인가 싶어서 flask라는 명령어만 쳐봤는데에도 동일한 에러문구가 출력되었다.

👉 문제 발생 이유

구글링을 해보니 가장 상단에서 📁 문제 해결에 관련된 내용을 찾을 수 있었다.
링크된 페이지를 읽어보면, 해당 문제는 flask 1.1.2 혹은 flask 1.1.4를 이용한 python flask app을 실행할 때 발생할 수 있는 문제라고 한다.
Flask는 Jinja와 함께 사용되는 MarkupSafeItsDangerous라는 두가지 package에 의존성을 지닌다.
flask 1.1.2는 itdangerous >= 0.24를 필요로 하는데, itsdangerous의 최신 버전(2.10)에서는 JSON API가 deprecated 되어 발생하는 문제로 보인다.

👉 해결

찾은 페이지에서는 이 문제 해결을 위해 3가지 방식을 제공해주는데, best way라는 첫번째 방법으로 시도했다.
flask 1.1.2에서 발생하는 이슈이기 때문에 flask의 version을 2로 upgrade 시켜주는 것이 그 방법이다.

pyproject.toml 파일에 있던 flask의 version을 2.0.2로 바꾸어주고 poetry update를 실행해서 flask의 version을 변경시켜주었다.
그리고 다시 flask 혹은 flask run을 실행하니 정상적으로 flask app이 실행되었다.

✏️ 해결 방법들

  1. flask upgrade : itsdangerous가 같이 upgrade됨
# falsk version > 2
pip install flask==2.0.2
  1. flask를 1.1.4로 upgrade하고 markupsafe를 2.0.1로 downgrade
pip install Flask==1.1.4
pip install markupsafe==2.0.1

3.itsdangerous downgrade : flask 1.1.2를 계속 사용할 경우

pip install itsdangerous==2.0.1
profile
무럭무럭 버섯농장

0개의 댓글