Update __init__.py to support symbolic links
authorCSBVision <bjoern.boeken@csb.com>
Wed, 14 Apr 2021 10:05:53 +0000 (12:05 +0200)
committerCSBVision <bjoern.boeken@csb.com>
Wed, 14 Apr 2021 16:13:45 +0000 (16:13 +0000)
Currently, the LOADER_DIR is set as os.path.dirname(os.path.abspath(__file__)). This does not point to the true library path if the cv2 folder is symlinked into the Python package directory such that importing cv2 under Python fails. The proposed change only resolves symbolic links correctly by calling os.path.realpath(__file__) first and does not change anything if __file__ contains no symbolic link.

modules/python/package/cv2/__init__.py

index 940ac65732e84c0479761b49458813e642f98f30..de70872839720ec854b79036fc2d567c141e0675 100644 (file)
@@ -34,7 +34,7 @@ def bootstrap():
     import platform
     if DEBUG: print('OpenCV loader: os.name="{}"  platform.system()="{}"'.format(os.name, str(platform.system())))
 
-    LOADER_DIR=os.path.dirname(os.path.abspath(__file__))
+    LOADER_DIR = os.path.dirname(os.path.abspath(os.path.realpath(__file__)))
 
     PYTHON_EXTENSIONS_PATHS = []
     BINARIES_PATHS = []