Вылетает exe файл пайтон
Установка PyInstaller не отличается от установки любой другой библиотеки Python.
Вот так можно проверить версию PyInstaller.
Я использую PyInstaller версии 4.2.
Создание exe файла с помощью PyInstaller
PyInstaller собирает в один пакет Python-приложение и все необходимые ему библиотеки следующим образом:
- Считывает файл скрипта.
- Анализирует код для выявления всех зависимостей, необходимых для работы. spec, который содержит название скрипта, библиотеки-зависимости, любые файлы, включая те параметры, которые были переданы в команду PyInstaller.
- Собирает копии всех библиотек и файлов вместе с активным интерпретатором Python.
- Создает папку BUILD в папке со скриптом и записывает логи вместе с рабочими файлами в BUILD.
- Создает папку DIST в папке со скриптом, если она еще не существует.
- Записывает все необходимые файлы вместе со скриптом или в одну папку, или в один исполняемый файл.
Если использовать параметр команды onedir или -D при генерации исполняемого файла, тогда все будет помещено в одну папку. Это поведение по умолчанию. Если же использовать параметр onefile или -F , то все окажется в одном исполняемом файле.
Возьмем в качестве примера простейший скрипт на Python c названием simple.py, который содержит такой код.
Создадим один исполняемый файл. В командной строке введите:
После завершения установки будет две папки, BUILD и DIST, а также новый файл с расширением .spec. Spec-файл будет называться так же, как и файл скрипта.
Python создает каталог распространения, который содержит основной исполняемый файл, а также все динамические библиотеки.
Вот что произойдет после запуска файла.
Также, открыв spec-файл, можно увидеть раздел datas, в котором указывается, что файл netflix_titles.csv копируется в текущую директорию.
Запустим файл simple1.exe, появится консоль с выводом: Всего фильмов: 7787 .
Добавление файлов с данными и параметр onefile
Скрипт обновлен для чтения папки TEMP и файлов с данными. Создадим exe-файл с помощью onefile и add-data.
После успешного создания файл simple1.exe появится в папке DIST.
Можно скопировать исполняемый файл на рабочий стол и запустить, чтобы убедиться, что нет никакой ошибки, связанной с отсутствием файла.
Дополнительные импорты с помощью 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).
Читайте также: