Не открывается exe файл pyinstaller
Я использую Pycharm для написания исходного кода .py, он отлично работает, когда я использую «Run» в Pycharm. После того, как я закончил писать исходный код, я хочу использовать Pyinstaller для упаковки кода в исполняемый файл, процесс упаковки отлично работает и создается файл .exe. Но когда я дважды нажимаю исполняемый файл, реакции нет. Не знаю, что случилось, пожалуйста, помогите мне. Pyinstaller создал отчет о предупреждении в txt-файле, но я не думаю, что это основная причина, я все равно привязал его внизу.
Что случилось, Pyinstaller не смог найти пути некоторых модулей, которые вы использовали в своем скрипте. Чтобы решить проблему, простейшая вещь, которую вы можете сделать, - это расширить путь. Вы можете запустить это в терминале pycharm, чтобы добавить эти пути в файл спецификаций. Или вы можете отредактировать сам файл спецификаций.
Включите все другие места, которые сценарий может искать для imports.These пути будут добавлены в sys.path во время анализа.
Если это не сработало для вас, попробуйте скрытый импорт, расширьте путь пакета и добавьте перехватчики времени выполнения, как показано в здесь .
Что случилось, Pyinstaller не смог найти пути некоторых модулей, которые вы использовали в своем скрипте. Чтобы решить проблему, простейшая вещь, которую вы можете сделать, - это расширить путь. Вы можете запустить это в терминале pycharm, чтобы добавить эти пути в файл спецификаций. Или вы можете отредактировать сам файл спецификаций.
Включите все другие места, которые сценарий может искать для imports.These пути будут добавлены в sys.path во время анализа.
Если это не сработало для вас, попробуйте скрытый импорт, расширьте путь пакета и добавьте перехватчики времени выполнения, как показано в здесь .
Что случилось, Pyinstaller не смог найти пути некоторых модулей, которые вы использовали в своем скрипте. Чтобы решить проблему, простейшая вещь, которую вы можете сделать, - это расширить путь. Вы можете запустить это в терминале pycharm, чтобы добавить эти пути в файл спецификаций. Или вы можете отредактировать сам файл спецификаций.
Включите все другие места, которые сценарий может искать для imports.These пути будут добавлены в sys.path во время анализа.
Если это не сработало для вас, попробуйте скрытый импорт, расширьте путь пакета и добавьте перехватчики времени выполнения, как показано в здесь .
Я пытался упаковать исполняемый файл с помощью «pyinstaller -F main.py» вместо использования «pyinstaller -F-w main.py». Это позволяет мне запускать оконное приложение через CMD, а затем я получил следующую ошибку:
Fatal Python error: Py_Initialize: невозможно получить кодировку локали
zipimport.ZipImportError: не удается найти код 'encodings' Current
thread 0x00003d20 (последний вызов сначала):
Только сейчас я попытался изменить версию Python с 3.7 до 3.6.3, упаковка отлично работает, и, наконец, я смог нормально запустить мой .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-скриптов:
Установимл pyintstaller через “pip install pyinstaller”
Собираю exe “pyinstaller myprog.py”
Получаю в папке “dist” исполнтельный файл и кучу библиотек. - Программа работает
Собираю все в один EXE “pyinstaller -F myprog.py”
Получаю один exe, но программа не запускается.
Пишет: ‘numpy.lib._compiled_base.pyd could not be extracted!’
А там таких фалов numpy.* должно быть 8 штук.
pyinstaller не запускается программа
P.S. Это открытие сделал не я, а майн френд JOHN_16.
P.S.S. А вообще собирать в exe это лихой изврат
Отредактировано 4kpt_III (Дек. 29, 2014 13:02:29)
pyinstaller не запускается программа
Изврат не изврат. Если под windows для расспространеия программы можно взять и всю папку Python34 в свой инсталятор засунуть.
То в линукс наверное так не получится. Там библиотеки для моей программы ставятся тремя способами. 1) Из репозитория 2) Deb пакет скаченный с сайта 3) Из исходников python setap.py install
Сам замучаешься все ставить. А кто не разбирается вообще не сможет.
pyinstaller не запускается программа
Только что попробывал cxFreeze.
Пришлось коечто добросить руками в папку с exe. =>sqldrivers
Вопросы.
1)Можно ли собрать все в одном exe?
2)Как собрать что бы программа запускалась с консолью?
3) На сколько это все надежно в случае возниковения критической ошибки? Программа будет работать дальше или будит системная ошибка с аварийным завершением?
4) Программа затребовала myres_rc.py. Возникла идея. Можноли один модуль - файл.py не запоковывать, а оставить возможность конечному пользователю использовать его для подключени своего скрипта( как открытый протокол для интеграции программы или подключения плагинов)?
Отредактировано mishapk (Дек. 29, 2014 14:01:27)
pyinstaller не запускается программа
1. Не знаю, но должно быть. Документация Вам даст точный ответ.
2. То же, что и 1.
3. Ошибка это всегда ошибка. Аварийное завершение.
mishapk
Сам замучаешься все ставить. А кто не разбирается вообще не сможет.
Кто не разбирается, линукс не ставит. Или начинает разбираться или сносит к чертям собачьим Если количество пакетов большое, то используется файл requirements.txt. На винде то же самое. Ставится питон, потом pip. Качается Ваш пакет и ставится одной командой и сам пакет и все зависимости.
pyinstaller не запускается программа
mishapk
2)Как собрать что бы программа запускалась с консолью?
В Executable укажите base='Console'
mishapk
3) На сколько это все надежно в случае возниковения критической ошибки? Программа будет работать дальше или будит системная ошибка с аварийным завершением?
На то она и “критическая”
4)
Скорее всего можно, в основной программе sys.path покорректировать на нужный каталог. Пробовать надо, короче.
Иван Тихомиров запись закреплена
Ребят, хочу из Python в .EXE сделать, но не получается. Смотрел урок от Хауди Хо, но ничего не вышло. После того как в cmd пишу pyinstaller test5.py в cmd пишет ошибку, а в папке, где находится мой test5 создаётся 2 папки(dist и build). В видеоролике в папке dist появляется .exe, а у меня эта папка пустая.
Evgeny, он, скорее всего, имеет ввиду, что у него экзэшник в dist не создается
Анатолий, ну не может же просто так не создаваться. Он пишет про какую-то ошибку, но саму ошибку не пишет.
Evgeny, и что? Я уже ответил выше, что это проблема распространенная на Windows
Evgeny, и что? При установки dev с GitHub всё корректно работает даже на 3.8, проверенно лично и еще массой пользователей с данной проблемой
Читайте также: