python3 virtualenv에서 cv2(openCV)를 찾지 못할 때

Python 3.5.2 (default, Nov 12 2018, 13:43:14)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'cv2'

python 가상환경을 만들고 cv2를 import하려는데 위와 같은 에러메시지가 나타났다. 가상환경이 아닌 로컬 환경에서는 정상 동작했는데 위와 같은 문제가 발생하는 이유는 라이브러리 링크가 되지 않았기 때문이다.

우분투를 기준으로 openCV가 로컬에 정상 설치되었다면 다음과 같은 파일을 확인할 수 있다.

/usr/local/lib/python3.5/dist-packages/cv2.cpython-35m-aarch64-linux-gnu.so

(참고 : 버전에 따라 파일명은 상이할 수 있다.)

위 라이브러리 파일을 내가 새로 만든 가상환경에 링크해주어야 한다.

$ python3 -m venv py3
$ ln -s /usr/local/lib/python3.5/dist-packages/cv2.cpython-35m-aarch64-linux-gnu.so py3/lib/python3.5/site-packages/cv2.so
$ py3/bin/python -m pip install --upgrade pip setuptools
$ source py3/bin/activate
$ pip install numpy

위와 같이 설치를 완료하면 다음과 같이 cv2가 정상적으로 import 된 것을 확인할 수 있다.

Python 3.5.2 (default, Nov 12 2018, 13:43:14)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> print(cv2.__version__)
3.4.1-dev

Leave a Reply