OpenCV 빌드 후 ModuleNotFoundError: No module named 'cv2' 에러 해결
OpenCV 빌드하여 설치 후 Python에서 cv 모듈을 로드시 다음 에러가 발생한 경우 해결한 방법입니다.
ModuleNotFoundError: No module named 'cv2'
상황에 따라선 다른 방법이 필요할 수도 있습니다.
2022. 11. 25 최초작성
2022. 11. 26
우선 cv2 모듈 파일 위치를 찾았습니다.
find /usr | grep cv2 명령으로 검색하여 다음처럼 찾았습니다.
/usr/local/lib/python3.8/site-packages/cv2.cpython-38-x86_64-linux-gnu.so
다음처럼 복사해주고 나서 해결되었습니다.
파이썬마다 라이브러리 모듈을 찾을데 검색되는 디폴트로 사용하는 dist-packages 디렉토리 위치가 다른데 엉뚱한 곳에 복사되어 있어 문제가 생긴듯합니다.
cv2 모듈이 복사되는 위치는 리눅스에 설치된 파이썬 환경에 따라 다를 수 있습니다.
sudo cp /usr/local/lib/python3.8/site-packages/cv2.cpython-38-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/
또 다른 방법은 cmake 실행시 파이썬 모듈의 위치를 찾는 위치를 지정해주면 됩니다.
우선 Python이 라이브러리를 인식하는 위치를 확인합니다. 여기에선 보라색으로 표시한 경로입니다.
$ python3 -m site
sys.path = [
'/mnt/c/Users/webnautes',
'/usr/lib/python310.zip',
'/usr/lib/python3.10',
'/usr/lib/python3.10/lib-dynload',
'/home/webnautes/.local/lib/python3.10/site-packages',
'/usr/local/lib/python3.10/dist-packages',
'/usr/lib/python3/dist-packages',
]
USER_BASE: '/home/webnautes/.local' (exists)
USER_SITE: '/home/webnautes/.local/lib/python3.10/site-packages' (exists)
ENABLE_USER_SITE: True
OpenCV 빌드를 위한 cmake 명령시 다음처럼 옵션을 추가해주면 됩니다. 추가한 경로에서 cv2 모듈을 찾게 됩니다.
-D PYTHON3_PACKAGES_PATH=/usr/local/lib/python3.10/dist-packages