Trouble/Python, Pytorch

Pycharm 에서 matplotlib.pyplot 사용 시, module 'backend_interagg' has no attribute 'FigureCanvas' 문제

침닦는수건 2023. 11. 22. 20:12
반응형

pycharm과 matplotlib.pyplot 둘 다 python 코딩할 때 굉장히 많이 쓰는데 특정 조합에서 다음과 같은 에러가 났었다.

AttributeError: module 'backend_interagg' has no attribute 'FigureCanvas'

 

나 같은 경우, pycharm 2020 + matplotlib 3.8.2로 사용했을 때 위 오류가 났다. 

 

위 에러는 site-packages/matplotlib.pyplot.py, line 343 에서 발생한 오류라서 matplotlib 자체 오류이고 뭔가 코딩을 잘못해서 그런 것은 아니다.

 

원인

이런 오류의 대부분은 버전 문제이듯이, 이 문제도 기본적으로 버전 문제가 맞다. FigureCanvas는 버전 3.6에서 deprecated되어 관리되지 않았고 3.8에서 완전 expired되었다고 한다.

 

해결책

1) 일단 기본적으로 버전을 낮추면 당연히 된다. 버전 3.6.0 이전의 matplotlib를 설치해서 사용하면 된다. 하지만 버전을 올리는 것도 아니고 낮추는 것은 장기적으로 좋은 방식은 아닌 것 같다.

 

2) 그렇다면 다른 방법은 없을까? (이 방식을 권장함)

 

일단 FigureCanvas를 명시적으로 코딩할 때 사용하지 않았다면, pycharm에서 matplotlib.pyplot을 쓸 데 어디선가 자동으로 썼다는 말인데, 그 부분을 disable시키면 해결할 수 있다. (해결한다기 보다 우회하는 방법에 가깝다.)

 

검색을 조금 해보니, pycharm에서 figure를 보여줄 때 따로 윈도우를 띄우지 않고 pycharm 내부창에서 보여주는데 여기에서 FigureCanvas를 사용한다. 즉 pycharm에서 figure를 pycharm 안에서 띄우려고 할 때 버전 문제가 있다는 뜻이다. 

 

따라서 pycharm에서 figure를 내부에 띄우지 못하도록 disable할 경우 에러를 피할 수 있다. 

 

 

File - Settings - Tools - PYthon Scientific에 들어가보면 "show plots in tool window"가 체크되어 있을텐데 위와 같이 체크 해제하면 오류가 없어진다!!

반응형