Добрый день!
Я собрал OpenCV с поддержкой GStreamer на Windows 10 и завершил бета-версию приложения. Когда я начал собирать проект в exe в один файл (так требует заказчик), столкнулся с проблемой загрузки DLL.
Хотя я добавил пути к DLL OpenCV и GStreamer в системные переменные, и даже скопировал все необходимые DLL из папки build OpenCV в отдельную папку для удобного развёртывания, при запуске exe всё равно возникает ошибка:
Traceback (most recent call last):
File "main.py", line 3, in <module>
File "C:\Users\27C6~1\AppData\Local\Temp\_MEI219682\cv2\__init__.py", line 182, in <module>
bootstrap()
File "C:\Users\27C6~1\AppData\Local\Temp\_MEI219682\cv2\__init__.py", line 154, in bootstrap
native_module = importlib.import_module("cv2")
File "importlib\__init__.py", line 126, in import_module
ImportError: DLL load failed while importing cv2: Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).
[PYI-23564:ERROR] Failed to execute script 'main' due to unhandled exception!
Система видит переменные PATH правильно, что подтверждается выводом OpenCV loader при запуске exe:
OpenCV loader: PYTHON_EXTENSIONS_PATHS=['D:\\test_open\\lib\\python3\\Release']
OpenCV loader: BINARIES_PATHS=['D:\\test_open\\Release', 'D:\\test_open\\bin']
Версия OpenCV: 4.13.0-dev
Отмечу, что при запуске приложения через Python напрямую проблем с загрузкой DLL нет — все работает корректно.
Использую PyInstaller - команда:
pyinstaller --noconfirm --onefile --console --add-data "app;app" --add-data "venv\\lib\\site-packages\\cv2;cv2" main.py