Замороженный исполняемый (с использованием 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-файлы.

Спасибо

0 ответов

Другие вопросы по тегам