Замороженный исполняемый (с использованием cxFreeze) код Python работает только при запуске.exe из каталога сборки
Я замораживаю приложение, используя cx_freeze, который создает папку сборки, содержащую различные dll и exe-файл программы. Когда я пытаюсь вызвать этот exe-файл из командной строки (Windows 10, 64-разрядная версия), он работает нормально, пока текущий путь командной строки является папкой сборки.
C:\mypath\build> file.exe
Тем не менее, если я пытаюсь вызвать exe, когда путь командной строки находится в другой папке - например,
c:\mypath> build\file.exe
Я получаю ошибку, связанную с тем, что qwindows.dll не найден
Я попытался заставить свое программное обеспечение идентифицировать путь exe и добавить его в системный путь (используя как функцию QApplication.addLibraryPath, так и sys.path):
exe_dir = os.path.dirname(sys.executable)
QApplication.addLibraryPath(exe_dir)
sys.path.insert(0, exe_dir)
Я гарантировал, что необходимые файлы находятся в корне папки сборки, так что это exe_dir
определенно содержал необходимые папки, но когда.exe запустился, он не смог их найти.
Я подозреваю, что это простая ошибка пути и задаюсь вопросом, может ли кто-нибудь предложить (возможно, однострочное решение) сказать замороженному exe-файлу, как правильно находить его dll-файлы.
Спасибо