Как преобразовать .py в .exe для Python?

126

Я пытаюсь преобразовать довольно простую программу Python в исполняемый файл и не могу найти то, что искал, поэтому у меня есть несколько вопросов (я использую Python 3.6):

Методы, которые я нашел до сих пор, следующие.

  1. загрузка старой версии Python и использование pyinstaller/py2exe
  2. настройка виртуальной среды в Python 3.6, которая позволит мне сделать 1.
  3. загрузка конвертера Python в C ++ и его использование.

Вот что я пробовал / с какими проблемами столкнулся.

  • Я установил pyinstallerперед обязательной загрузкой (pypi-something), поэтому она не сработала. После загрузки необходимого файла,pyinstaller прежнему не распознает его.
  • Если я настраиваю virtualenv в Python 2.7, действительно ли мне нужно установить Python 2.7?
  • аналогично, единственные конвертеры Python в C ++, которые я вижу, работают только до Python 3.5 - нужно ли мне загружать и использовать эту версию, если я пытаюсь это сделать?
user7396807
источник
4
Не уверен, почему за него проголосовали против (возможно, потому, что рекомендации по инструментам не подходят для SO), но этот вопрос будет полезен для других в будущем. Подобные предыдущие вопросы не были отмечены как оффтоп, например stackoverflow.com/questions/2136837/…
Chris_Rands

Ответы:

127

Шаги по преобразованию .py в .exe в Python 3.6

  1. Установите Python 3.6 .
  2. Установите cx_Freeze (откройте командную строку и введите pip install cx_Freeze.
  3. Установите idna, (откройте командную строку и введите pip install idna.
  4. Напишите .pyпрограмму с именем myfirstprog.py.
  5. Создайте новый файл python с именем setup.pyв текущем каталоге вашего скрипта.
  6. В setup.pyфайл скопируйте приведенный ниже код и сохраните его.
  7. При нажатой клавише shift щелкните правой кнопкой мыши тот же каталог, чтобы открыть окно командной строки.
  8. В командной строке введите python setup.py build
  9. Если ваш скрипт не содержит ошибок, то с созданием приложения проблем не возникнет.
  10. Проверьте только что созданную папку build. В нем есть еще одна папка. В этой папке вы можете найти свое приложение. Запустить его. Сделай себя счастливым.

Смотрите исходный сценарий в моем блоге .

setup.py:

from cx_Freeze import setup, Executable

base = None    

executables = [Executable("myfirstprog.py", base=base)]

packages = ["idna"]
options = {
    'build_exe': {    
        'packages':packages,
    },    
}

setup(
    name = "<any name>",
    options = options,
    version = "<any number>",
    description = '<any description>',
    executables = executables
)

РЕДАКТИРОВАТЬ:

  • убедитесь, что вместо этого myfirstprog.pyвы должны .pyуказать имя файла расширения, созданное на шаге 4 ;
  • Вы должны включать каждый importпакет в ред вашего .pyв packagesсписок (например: packages = ["idna", "os","sys"])
  • any name, any number, any descriptionв setup.pyфайле не должны оставаться такими же, вы должны изменить его соответствующим образом (например: name = "<first_ever>", version = "0.11", description = '')
  • то importпакеты ред должны быть установлены перед началом шага 8 .
Мария Ирудая Регилан Дж.
источник
10
Есть ли способ сделать его «автономным» исполняемым файлом? Если я буду действовать так, как вы советуете в своей статье, я получу папку exe.win.32-3.6. который полон вспомогательных файлов и каталогов (например, «коллекции /», «электронная почта» и т. д.). Ужасно для простой печати («привет»). Я хотел бы создать один-единственный исполняемый файл, который будет работать на другом компьютере как есть, без необходимости в других файлах. Есть ли для этого вариант сборки?
FanaticD
2
@FanaticD Python - не лучший вариант. Cython (кошмар для работы) или Nuitka были бы вашим лучшим выбором. Но заставить их работать - уже само по себе достижение.
Tetora
Будет ли это работать в Python 3.5.3? (Последняя стабильная версия на Debian 9 Stretch).
Джерард
Как мне импортировать from sklearn.externals import joblib? как упомянуто в редакции, шаг 2.
Джек
77

Python 3.6 поддерживается PyInstaller.

Откройте окно cmd в папке Python (откройте окно команд и используйте cdили, удерживая shift, щелкните его правой кнопкой мыши в проводнике Windows и выберите «Открыть окно команд здесь»). Тогда просто введите

pip install pyinstaller

И это все.

Самый простой способ использовать его - ввести в командной строке

pyinstaller file_name.py

Чтобы узнать больше о том, как его использовать, прочтите этот вопрос .

Родриго Насименто
источник
4
только что протестирован с python 3.7.0. Хотя много предупреждений, но они успешно скомпилированы и работают на Windows 10
Ole_S
2
Я скомпилировал программу с Python 3.5.0 без предупреждений или ошибок, и она работает, как ожидалось
Менотдан,
Кто-нибудь знает, что важно в Pyinstaller? Будет ли сборка exe на Windows 10 работать в Windows 8? Или 32-битная сборка Windows 10 будет работать в 64-битных системах Windows 10?
Derik81,
27

На GitHub есть проект с открытым исходным кодом под названием auto-py-to-exe . На самом деле он также просто использует PyInstaller для внутренних целей, но, поскольку он имеет простой графический интерфейс, который управляет PyInstaller, это может быть удобной альтернативой. Он также может выводить автономный файл в отличие от других решений. Они также предоставляют видео, показывающее, как это настроить.

GUI:

Авто Py в Exe

Вывод:

Вывод

болтливость
источник
2
Вы должны были упомянуть, что для этого требуется MVC ++. ошибка: требуется Microsoft Visual C ++ 14.0.
SKR
3
Я не нахожу в этом никакой ценности, так как он построен на pyinstaller, и если вы получите ошибку в pyinstaller, вы тоже получите его здесь!
CV_passionate
9

Не могу сказать, что лучше, но в прошлом я успешно использовал cx_Freeze. . Недавно они обновились (7 января 2017 г.) до версии 5.0.1, которая поддерживает Python 3.6.

Вот pypi https://pypi.python.org/pypi/cx_Freeze

В документации показано, что есть несколько способов сделать это в зависимости от ваших потребностей. http://cx-freeze.readthedocs.io/en/latest/overview.html

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

Как использовать cx_freeze?

Gerschel
источник
11
Стоит отметить, что cxFreeze не выполняет однофайловые исполняемые файлы.
Эдди Харт
7

Я использую Nuitka и PyInstaller с моим пакетом PySimpleGUI.

Nuitka При компиляции tkinter с Nuikta возникли проблемы. Один из участников проекта разработал сценарий, устраняющий проблему.

Если вы не используете tkinter, он может «просто работать» для вас. Если вы используете tkinter, скажите об этом, и я постараюсь опубликовать сценарий и инструкции.

PyInstaller Я использую 3.6, и PyInstaller отлично работает! Команда, которую я использую для создания моего exe-файла:

pyinstaller -wF myfile.py

-WF создаст один EXE-файл. Поскольку все мои программы имеют графический интерфейс, и я не хочу отображать командное окно, опция -w скроет командное окно.

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

[Обновление от 20 июля 2019 г.]

Существует решение на основе графического интерфейса PySimpleGUI, использующее PyInstaller. Он использует PySimpleGUI. Это называется pysimplegui-instanceaker и может быть установлен с помощью pip.

pip install PySimpleGUI-exemaker

Чтобы запустить его после установки:

python -m pysimplegui-exemaker.pysimplegui-exemaker

MikeyB
источник
5

Теперь вы можете преобразовать его с помощью PyInstaller. Я работаю даже с Python 3.

шаги:

  1. Включите свой компьютер
  2. Открыть командную строку
  3. Введите команду pip install pyinstaller
  4. Когда он будет установлен, используйте команду cd для перехода в рабочий каталог.
  5. Команда выполнения pyinstall <filename>
Теджас Джоши
источник
Почему люди голосуют против этого? Я просто отправляю этот ответ, чтобы помочь.
Теджас Джоши
3
потому что он не работает на Python 3.6, который OP специально написал, что он использует.
uri
Pyinstaller теперь должен работать. Если нет, то расскажите мне в комментариях
Теджас Джоши