Ошибка Windows-Pyinstaller "не удалось выполнить сценарий" Когда приложение было нажато

Мне сложно преодолеть эту ошибку, я искал всюду для этого сообщения об ошибке, и ничто не кажется уместным для моей ситуации:

"failed to execute script new-app" 

new-app - моя программа GUI для python. Когда я запускаю pyinstaller, используя эту команду:

pyinstaller.exe --onedir --hidden-import FileDialog --windowed --noupx new-app.py

Он работает плавно. Кроме того, когда я запускаю командную строку для запуска программы gui, она отлично работает и графический интерфейс создается с помощью этой команды:

.\dist\new-app\new-app.exe

Но когда я иду к этому файлу, надеюсь, чтобы иметь возможность щелкнуть приложение, чтобы получить графический интерфейс, он дает мне ошибку, указанную выше. Почему это?

Я использую python2.7, а ОС - Windows 7 Enterprise.

Любые входные данные будут оценены и будут благодарны заблаговременно.

Ответ 1

Ну, я думаю, я нашел решение для моего собственного вопроса, вот как я это сделал:

Несмотря на то, что я смог успешно запустить программу, используя обычную команду python, а также успешно запустить pyinstaller и выполнить приложение "new_app.exe" с помощью командной строки, упомянутой в вопросе, который в обоих случаях отображает графический интерфейс без проблем вообще. Однако, только когда я нажимаю приложение, он не позволяет отображать графический интерфейс и не генерируется ошибка.

Итак, что я сделал, я добавил дополнительный параметр --debug в команду pyinstaller и удалив параметр --windowed, чтобы я мог видеть, что на самом деле происходит при нажатии на приложение, и я обнаружил, что произошла ошибка, которая сделала ошибку много смысла, когда я его отслеживаю, он в основном жаловался, что "some_image.jpg" нет такого файла или каталога.

Причина, по которой он жалуется и не жаловался, когда я запускал сценарий с первого места или даже с помощью командной строки "./", был потому, что образ файла существовал по тому же пути, что и скрипт, но когда pyinstaller создал "dist", каталог, в котором есть продукт приложения, имеет смысл, что файла изображения нет, и поэтому я в основном переместил его в этот каталог dist, где есть приложение, доступное для клика!

Ответ 2

Добавьте эту функцию в начало вашего скрипта:

import sys, os 
    def resource_path(relative_path):
        if hasattr(sys, '_MEIPASS'):
            return os.path.join(sys._MEIPASS, relative_path)
        return os.path.join(os.path.abspath("."), relative_path)

Обратитесь к файлам данных, вызвав функцию resource_path(), например:

resource_path('myimage.gif')

Затем используйте следующую команду:

pyinstaller --onefile --windowed --add-data todo.ico;. script.py

Для получения дополнительной информации посетите страницу документации.

Ответ 3

Если кто-то не получил результаты из других ответов, я решил похожую проблему:

  1. добавление --hidden-import мере необходимости для любых отсутствующих модулей

  2. очистка связанных папок и spec файлов:

rmdir/s/q dist

rmdir/s/q build

del/s/q my_service.spec

  1. Выполнение команд для установки от имени администратора

Ответ 4

Я получил ту же ошибку и понял, что я написал свой скрипт с использованием Anaconda, но pyinstaller пытается упаковать скрипт на чистом python. Таким образом, модули, которых нет в папке библиотеки pythons, вызывают эту проблему.