8ba80282c3
When the OpenCV3 Python support is enabled with Python 3.x, it builds properly, and the resulting .so file is built for the target architecture, but its name is wrong: output/target/usr/lib/python3.6/site-packages/cv2.cpython-36m-x86_64-linux-gnu.so This prevents Python 3.x from importing the module: >>> import cv2 Traceback (most recent call last): File "<stdin>", line 1, in <module> ModuleNotFoundError: No module named 'cv2' In order to fix this, we simply need to pass PKG_PYTHON_DISTUTILS_ENV in the environment. The Python module then gets named: output/target/usr/lib/python3.6/site-packages/cv2.cpython-36m-arm-linux-gnueabi.so And can be imported properly: >>> import cv2 >>> This solution was suggested by Arnout Vandecappelle in https://stackoverflow.com/questions/49059035/buildroot-opencv3-python-package-builds-for-the-wrong-target. With Python 2.x, the module is named just cv2.so so this problem isn't visible. However, for consistency, we also pass PKG_PYTHON_DISTUTILS_ENV when building against Python 2.x, by putting the OPENCV3_CONF_ENV assignment inside the BR2_PACKAGE_OPENCV3_LIB_PYTHON condition, but outside the BR2_PACKAGE_PYTHON3/BR2_PACKAGE_PYTHON condition. Signed-off-by: Sasha Shyrokov <alexander-shyrokov@idexx.com> [Thomas: extend the commit log, apply the solution to Python 2.x.] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> |
||
---|---|---|
.. | ||
Config.in | ||
opencv3.hash | ||
opencv3.mk |