From 36d771affc952abb30bd2eb8c9d610223be5a68f Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Thu, 26 Nov 2020 12:24:15 +0000 Subject: [PATCH] python: restore sys.path in bootstrap() - multiprocessing need to start from bootstrap code - loading may fail due to missing os.add_dll_directory() calls --- modules/python/package/cv2/__init__.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/python/package/cv2/__init__.py b/modules/python/package/cv2/__init__.py index d367998b0b..940ac65732 100644 --- a/modules/python/package/cv2/__init__.py +++ b/modules/python/package/cv2/__init__.py @@ -18,6 +18,10 @@ except ImportError: def bootstrap(): import sys + + import copy + save_sys_path = copy.copy(sys.path) + if hasattr(sys, 'OpenCV_LOADER'): print(sys.path) raise ImportError('ERROR: recursion is detected during loading of "cv2" binary extensions. Check OpenCV installation.') @@ -85,6 +89,8 @@ def bootstrap(): del sys.modules['cv2'] import cv2 + sys.path = save_sys_path # multiprocessing should start from bootstrap code (https://github.com/opencv/opencv/issues/18502) + try: import sys del sys.OpenCV_LOADER