[Jetson] TKinter, Virtualenv에서 사용하기 ModuleNotFoundError: No module named '_tkinter' 해결 방법



ModuleNotFoundError: No module named '_tkinter' 해결 방법


tkinter는 간단하게 apt install로 설치 가능합니다.
sudo apt-get install python3-tk
다만, venv에서 사용하려고 하면 시스템에 설치된 tkinter 파일을 venv에서 찾지 못해서 에러가 발생합니다.

해결 방법

우선 시스템에 설치된 _tkinter~~.so 파일을 찾습니다.
저는 python3.6 버전이기 때문에 cpython-36m입니다. (python3.8이면 38m 등으로 버전에 맞게 수정)
find /usr/lib -name _tkinter.cpython-36m-aarch64-linux-gnu.so
나온 경로를 참고하여 심볼링 링크를 생성합니다.
  • cd 경로 설정 부분에서는 본인의 venv 경로를 {myvenvpath}에, venv name은 {myvenvname}에, python3.x는 본인의 python 버전에 맞춰 입력
  • ln -s 링크 설정 부분에서는 위 find에서 찾은 전체 경로를 /usr/lib/python3.x/lib-dynload/_tkinter.cpython-3xm-x86_64-linux-gnu.so 부분에 입력
저 같은 경우에는 python3.6으로, 기본 시스템으로 설치된 36m 버전의 _tkinter~.so 파일을 python3.8 lp(lp가 venv 이름)에 연결했습니다.
cd ~/{myvenvpath}/{myvenvname}/lib/{python3.x}/site-packages ln -s /usr/lib/{python3.x}/lib-dynload/_tkinter.cpython-{3xm}-x86_64-linux-gnu.so _tkinter.so
  • 심볼링 링크 연결
  • 심볼링 링크 연결 확인

심볼링 링크가 설정된 이후에 import tkinter를 하면 정상적으로 import되는걸 확인할 수 있습니다.


참고 문헌

[1]   https://stackoverflow.com/questions/15884075/tkinter-in-a-virtualenv

댓글

이 블로그의 인기 게시물

[opencv-python] 이미지 크기조절(resize) 하는 법

[python]파이썬: csv reader header skip (첫번째 행 무시하기, 안읽기)

[python] selenium close와 quit 차이점