Вылетает exe файл пайтон

Обновлено: 05.07.2024

Установка PyInstaller не отличается от установки любой другой библиотеки Python.

Вот так можно проверить версию PyInstaller.

Я использую PyInstaller версии 4.2.

Создание exe файла с помощью PyInstaller

PyInstaller собирает в один пакет Python-приложение и все необходимые ему библиотеки следующим образом:

  1. Считывает файл скрипта.
  2. Анализирует код для выявления всех зависимостей, необходимых для работы. spec, который содержит название скрипта, библиотеки-зависимости, любые файлы, включая те параметры, которые были переданы в команду PyInstaller.
  3. Собирает копии всех библиотек и файлов вместе с активным интерпретатором Python.
  4. Создает папку BUILD в папке со скриптом и записывает логи вместе с рабочими файлами в BUILD.
  5. Создает папку DIST в папке со скриптом, если она еще не существует.
  6. Записывает все необходимые файлы вместе со скриптом или в одну папку, или в один исполняемый файл.

Если использовать параметр команды onedir или -D при генерации исполняемого файла, тогда все будет помещено в одну папку. Это поведение по умолчанию. Если же использовать параметр onefile или -F , то все окажется в одном исполняемом файле.

Возьмем в качестве примера простейший скрипт на Python c названием simple.py, который содержит такой код.

Создадим один исполняемый файл. В командной строке введите:

После завершения установки будет две папки, BUILD и DIST, а также новый файл с расширением .spec. Spec-файл будет называться так же, как и файл скрипта.

папки, BUILD и DIST, а также файл .spec

Python создает каталог распространения, который содержит основной исполняемый файл, а также все динамические библиотеки.

 исполняемый файл

Вот что произойдет после запуска файла.

Добавление файлов с данными

Также, открыв spec-файл, можно увидеть раздел datas, в котором указывается, что файл netflix_titles.csv копируется в текущую директорию.

Запустим файл simple1.exe, появится консоль с выводом: Всего фильмов: 7787 .

Добавление файлов с данными и параметр onefile

Скрипт обновлен для чтения папки TEMP и файлов с данными. Создадим exe-файл с помощью onefile и add-data.

После успешного создания файл simple1.exe появится в папке DIST.

Можно скопировать исполняемый файл на рабочий стол и запустить, чтобы убедиться, что нет никакой ошибки, связанной с отсутствием файла.

Добавление файлов с данными и параметр onefile

Дополнительные импорты с помощью Hidden Imports

Исполняемому файлу требуются все импорты, которые нужны Python-скрипту. Иногда PyInstaller может пропустить динамические импорты или импорты второго уровня, возвращая ошибку ImportError: No module named …

Для решения этой ошибки нужно передать название недостающей библиотеки в hidden-import.

Например, чтобы добавить библиотеку os, нужно написать вот так:

Файл spec

Файл spec — это первый файл, который PyInstaller создает, чтобы закодировать содержимое скрипта Python вместе с параметрами, переданными при запуске.

PyInstaller считывает содержимое файла для создания исполняемого файла, определяя все, что может понадобиться для него.

Файл с расширением .spec сохраняется по умолчанию в текущей директории.

Если у вас есть какое-либо из нижеперечисленных требований, то вы можете изменить файл спецификации:

  • Собрать в один бандл с исполняемым файлы данных.
  • Включить другие исполняемые файлы: .dll или .so.
  • С помощью библиотек собрать в один бандл несколько программы.

Например, есть скрипт simpleModel.py, который использует TensorFlow и выводит номер версии этой библиотеки.

Компилируем модель с помощью PyInstaller:

После успешной компиляции запускаем исполняемый файл, который возвращает следующую ошибку.

Исправим ее, обновив файл spec. Одно из решений — создать файл spec.

Команда pyi-makespec создает spec-файл по умолчанию, содержащий все параметры, которые можно указать в командной строке. Файл simpleModel.spec создается в текущей директории.

Поскольку был использован параметр --onefile , то внутри файла будет только раздел exe.

Если использовать параметр по умолчанию или onedir, то вместе с exe-разделом будет также и раздел collect.

Можно открыть simpleModel.spec и добавить следующий текст для создания хуков.

Создаем хуки и добавляем их в hidden imports и раздел данных.

Файлы хуков расширяют возможность PyInstaller обрабатывать такие требования, как необходимость включать дополнительные данные или импортировать динамические библиотеки.

Обычно пакеты Python используют нормальные методы для импорта своих зависимостей, но в отдельных случаях, как например TensorFlow, существует необходимость импорта динамических библиотек. PyInstaller не может найти все библиотеки, или же их может быть слишком много. В таком случае рекомендуется использовать вспомогательный инструмент для импорта из PyInstaller.utils.hooks и собрать все подмодули для библиотеки.

Скомпилируем модель после обновления файла simpleModel.spec.

Скопируем исполняемый файл на рабочий стол и увидим, что теперь он корректно отображает версию TensorFlow.

Вывод:

PyInstaller предлагает несколько вариантов создания простых и сложных исполняемых файлов из Python-скриптов:


Многие пользователи ПК часто сталкиваются с ошибкой «Прекращена работа программы Python». Свидетельствует она о том, что на компьютере имеются вирусы, софту нехватает ресурсов для работы (зачастую ОЗУ), при своем запуске программа обращается к системному файлу, который поврежден или отсутствует. Также данная ошибка возникает при отсутствии важного для софта программного обеспечения. Поэтому рассмотрим основные способы решения этой неполадки.

Способы решения неполадки с прекращением работы программы Python

Важно отметить, что пользователи очень часто путают pythonw.exe и python.exe. Это два разных файлы, один из которых является вирусом. Поэтому, в первую очередь, если вы столкнулись с ошибкой «Прекращена работа программы Python», стоит проверить систему на вирусы. При этом лучше использовать для проверки свежую версию Dr.Web, так эта лечащая утилита имеет актуальные вирусные базы и тщательно сканирует систему на предмет вредоносногоПО.

Если вирусов нет на компьютере, нужно убедиться, что для запуска приложения достаточно ресурсов системы. Для этого нужно сверить технические характеристики ПК и самой программы. Для этого нажимаем «Пуск», кликаем правой кнопкой мыши на значке «Компьютер» и выбираем «Свойства».

Откроется окно конфигурации системы. Смотрим информацию о ПК.

После сверяем эти данные с требованиями программы.

Также рекомендуем проверить файл подкачки. Для этого выполняем следующее:

  • Жмём «Пуск», «Панель управления», «Система», «Дополнительные параметры системы».
  • Откроется небольшое окно. Переходим во вкладку «Дополнительно». В разделе «Быстродействие» нажимаем на кнопку «Параметры».
  • Откроется еще одно окно. Также переходим во вкладку «Дополнительно». В разделе «Виртуальная память» кликаем «Изменить».
  • Смотрим,чтобы стояла галочка напротив надписи «Автоматически выбирать объём файла подкачки».
  • Если отметки нет и задано другое количество памяти для файла подкачки, более чем объем ОЗУ, то нужно поставить отметку. Сохранить изменения и перезагрузить ПК.

На официальном форуме Майкрософт при возникновении ошибки с прекращением работы программы рекомендуют проверить, установлены ли следующие библиотеки:

Если данных библиотек нет или они устарели, можно перейти по ссылке и скачать необходимые.

Также, поскольку данная ошибка возникает при повреждении файлов системы вирусами, рекомендуем запустить командную строку с правами Администратора и ввести:

  • sfc /scannow;
  • DISM /Online /Cleanup-Image /RestoreHealth.

Если в конце проверки будет написано,что все файлы были восстановлены,то перезагрузитесь для их полного восстановления.

Здесь программа запускается и нормально работает если вводить числа, но если ввести символы - также вылетает.
Смею предположить что дело в кодировке, но блин не знаю что менять и где.

забыл сказать что стоит python3.3

Отредактировано airo (Дек. 11, 2013 21:50:40)

Проблема при запуске файла

Подумайте. То, что вы вводите, это какой тип данных и счем вы его сравниваете.

У меня ваш код работает, без вылетов.
Предпололжу, что из-за двойного клика ошибка, так как процесс уже запущен данного приложения.
Под Ubuntu запустил несколько раз, работает отлично.

Отредактировано Informatikum (Дек. 11, 2013 22:06:22)

Проблема при запуске файла

Подумайте. То, что вы вводите, это какой тип данных и счем вы его сравниваете.
Насколько помню объект полученный с помощью input становиться строкой, поэтому и сравнивается с “0”
Предпололжу, что из-за двойного клика ошибка, так как процесс уже запущен данного приложения.
Не очень понял, что имелась ввиду. Я создаю текстовый файл с расширением ру, сохраняю, закрываю, два раза кликаю по файлу и происходит то, что описал в первом.
Под Ubuntu запустил несколько раз, работает отлично.

Проблема при запуске файла

Informatikum
Предпололжу, что из-за двойного клика ошибка, так как процесс уже запущен данного приложения.

Что за хрень ты пишешь? Иди книжки читай и не лезь с советами.

airo, уверен что python3.3 запускается? У тебя только 3.3 установлен или может быть другая версия, к которой расширение .py привязано.

В любом случае вместо того, чтобы запускать по двойному клику, запусти из консоли.

1. Win+R, cmd
2. Перейди в папку со скриптом
3. python имя_файла.py

При этом нужно, чтобы у тебя путь к python был прописан в PATH. Если нет, то вызови python с явным указанием абсолютного пути (напр. C:\Python3.3\Python.exe)

Отредактировано cutwater (Дек. 12, 2013 15:44:35)

Проблема при запуске файла

cutwater
уверен что python3.3 запускается? У тебя только 3.3 установлен или может быть другая версия, к которой расширение .py привязано.

Кстати да, Вы правы. Стоит питон2.7 - уже снёс за ненадобностью. У файлов скриптов пропала открывающая программа; теперь не могу назначить эту открывающую программу (как понимаю это либо python.exe или pythonw.exe?)

В консоли работает всё отлично.

Проблема при запуске файла

airo, обычно для *.py файлов это python, для *.pyw - pythonw
Связано с некоторыми особенностями консольных приложений в винде.

Я загрузил pyinstaller, чтобы превратить мои скрипты python в исполняемую программу. У меня есть основной скрипт ((homepage.py) что при запуске будет отображаться окно с двумя кнопками (button1 и button2). Каждая из двух кнопок, если щелкнуть, будет запускать соответствующий скрипт python (input1.py или input2.py) отображает окно, в котором пользователь вводит данные для графического отображения в excel.

мои скрипты работают правильно, когда я запускаю их в Spyder через Anaconda. Однако, когда я переворачиваю свой основной сценарий (Homepage.py) в исполняемую программу и запустите ее, появится главное окно с двумя кнопками, но когда я нажимаю любую из двух кнопок, соответствующее окно не появляется и программа закрывается. Кто-нибудь знает, почему это произошло? Нужно ли мне перевернуть . input1.py и input2.py в .exe программы, а также, как я сделал с homepage.py?

в моих сценариях, когда мне нужно нажать любую из кнопок, я бы скрыть главное окно и показать новое окно. Будет ли скрывать и показывать то, что заставляет мою программу работать неправильно, даже если она работает в Spyder?

главное окно (homapge.py) импорт и имя класса,

button1 (input1.py) импорт и имя класса,

button2 (input2.py) импорт и имя класса,

кроме того, внутри обоих input1.py и input2.py, у меня есть функция кнопки, которая возвращается в Главное окно (homepage.py) при нажатии и внутри эту функцию я импортирую,

в конце homepage.py, input1.py, и input2.py у меня есть это значение,

Дайте мне знать, если вам нужно больше разъяснений или код.

EDIT 1:

код, который я использую в главном окне (homepage.py) который вызывает button1,

код, который я использую в главном окне (homepage.py) который вызывает button2,

изменить 2:

Я попытался запустить программу, после того как я изменен,

я получил эту ошибку в окне командной строки после ввода pyinstaller --onefile --оконная Домашняя страница.exe,

и я получил эти ошибки в warnhomepage.txt файл,

обновление:

P. S: Некоторые программы записи слишком медленны для записи окна, которое появляется и исчезает, поэтому я попытался с помощью камеры смартфона (iPhone) и он смог его обнаружить.

похоже, вы столкнулись с этим проблема (в основном то же самое, что и вы, но они используют TKinter).

Читайте также: