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와 함께 사용되는 MarkupSafe와 ItsDangerous라는 두가지 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이 실행되었다.
# falsk version > 2
pip install flask==2.0.2
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