제가 얼마전에 IDL-Python Bridge의 셋업 과정에 대하여 Windows 10에서 IDL 8.8과 Python 3.7을 연동시키는 예제를 통하여 소개를 한 바 있습니다.
http://blog.daum.net/swrush/560
IDL-Python Bridge의 사용법 (Win10용 IDL 8.8 기준)
IDL-Python Bridge 기능은 IDL 8.5 버전에서부터 도입되었으며, IDL에서 Python의 기능을 불러와서 쓰거나 반대로 Python에서 IDL의 기능을 불러와서 쓸 수 있도록 해주는 기능입니다. 아무래도 IDL 유저들 중
blog.daum.net
아마 여기서 설명된 과정을 그대로 따라간다면 셋업과 작동이 다 잘 되리라 생각되는데요. 그런데 제가 이렇게 셋업을 하고 잘 사용하던 와중에 생각지도 못했던 이슈와 마주치게 되었습니다. IDL 내에서 Python으로 들어가서 matplotlib 라이브러리를 사용하는 경우에 발생하는 이슈인데요. 이슈를 발생시킨 예제코드의 내용은 다음과 같습니다.
IDL> >>>
>>> import matplotlib.pyplot as plt
>>> a = [3, 7, 4]
>>> p = plt.plot(a)
>>> plt.show()
이와 같이 IDL 내에서 Python 프롬프트로 들어간 다음 그 안에서 matplotlib 라이브러리를 불러서 그림 표출을 하는 경우입니다. 즉 Python의 그래픽 기능을 불러오는 경우에 해당됩니다. 만약에 위와 같은 과정이 아무 문제없이 실행된다면 아래에 이어지는 내용은 무시하시고 계속 잘 사용하시면 됩니다. 그러나 저같은 경우에는 plt.plot 메서드를 사용하는 단계에서 다음과 같은 치명적인 에러가 발생하였습니다.
즉 이와 같이 This application failed to start because it could not find or load the qt platform plugin "windows" in "" 이라는 메시지의 팝업창이 뜨면서 실행이 중단되는 현상입니다. 여기서 확인 버튼을 누르면 아예 IDL도 강제종료가 되어버립니다. 사실 브릿지를 통하지않고 그냥 순수하게 Python 자체에서 해보면 발생하지 않는 문제입니다. 제가 Python으로 직접 들어가서 실행해본 모습은 다음과 같이 정상입니다.
하지만 IDL에서 브릿지 기능을 통하여 Python을 불러와서 동일한 내용을 실행하면 치명적인 에러가 발생하는 매우 난감한 이슈입니다. 그래서 이러한 현상에 대하여 Harris측에 문의한 결과, IDL-Python 브릿지의 사용에 있어서 Win10 뿐 아니라 Mac OS에서도 발생 가능한 이슈이며 QT plugin의 경로를 시스템 변수에 추가하는 방식으로 해결이 가능하다는 답변을 받았습니다. 그리고 알려준 방법을 적용하여 문제를 해결하였습니다. 따라서 여기서도 이 방법을 공유하고자 합니다.
우선 간단히 언급한다면 다음과 같은 내용을 시스템 변수 항목에 추가해주면 됩니다. Python이 Anaconda로 설치되어 있다고 가정할 경우 이 내용은 윈도우즈 및 Mac OS에 대하여 각각 다음과 같습니다.
QT_PLUGIN_PATH = <ANACONDA HOME>\Library\plugins (Windows)
QT_PLUGIN_PATH=<ANACONDA HOME>/pkgs/pyqt-5.9.2-py36h2a560b1_4/plugins (Mac OS)
윈도우즈에서 이 과정에 대하여 좀 더 자세히 소개합니다. 먼저 윈도우즈의 제어판에서 '고급 시스템 설정'으로 가서 '환경 변수' 버튼을 눌러 해당 인터페이스로 들어갑니다. 여기서 하단의 시스템 변수 아래쪽에 있는 '새로 만들기' 버튼을 누릅니다.
그러면 시스템 변수에 새로운 항목을 추가할 수 있도록 해주는 팝업 인터페이스가 다음과 같이 뜨는데, 여기서 '변수 이름'에 QT_PLUGIN_PATH라는 항목 이름을 써주고 '변수 값'에 해당 내용을 입력합니다. 이 내용은 Python 또는 Anaconda가 설치된 디렉토리 경로에 맞춰줘야 합니다. 아래의 내용은 제 컴퓨터에 해당되는 예제입니다.
여기서 확인 버튼을 누르면 이제는 시스템 변수에 방금 추가한 QT_PLUGIN_PATH 항목이 새로 추가된 것을 확인할 수 있습니다.
이제 확인 버튼을 누르고 나오면 됩니다. 그러면 모든 과정은 끝났습니다. 이제는 문제가 없는지 확인하기 위하여 다음과 같이 테스트를 한번 해봅시다.
이와 같이 이제는 잘 됩니다. 그래서 혹시라도 IDL-Python Bridge 기능을 사용하는데 있어서 이러한 QT plugin 관련 문제를 겪게 된다면 여기서 소개한 방법으로 해결해보면 될 것 같습니다.
'IDL > Bridge & External Linking' 카테고리의 다른 글
IDL 버전별로 브릿지 기능으로 연동되는 Python 버전 일람 (1) | 2023.11.14 |
---|---|
Mac OS에서 IDL-Python Bridge 셋업 과정의 각종 문제 해결 방법 (0) | 2020.10.05 |
IDL-Python Bridge의 사용법 (Mac OS용 IDL 8.8 기준) (0) | 2020.09.29 |
IDL-Python Bridge의 사용법 (Win10용 IDL 8.8 기준) (0) | 2020.09.18 |
Python Bridge의 사용법 (Windows용 IDL 8.5 기준) (0) | 2015.08.31 |