Ошибка 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
Если кто-то не получил результаты из других ответов, я решил похожую проблему:
-
добавление --hidden-import
мере необходимости для любых отсутствующих модулей
-
очистка связанных папок и spec файлов:
rmdir/s/q dist
rmdir/s/q build
del/s/q my_service.spec
- Выполнение команд для установки от имени администратора
Ответ 4
Я получил ту же ошибку и понял, что я написал свой скрипт с использованием Anaconda, но pyinstaller
пытается упаковать скрипт на чистом python. Таким образом, модули, которых нет в папке библиотеки pythons, вызывают эту проблему.