Як я можу конвертувати .py у .exe для Python?


126

Я намагаюся перетворити досить просту програму Python у виконуваний файл і не міг знайти те, що шукав, тому у мене є кілька питань (я запускаю Python 3.6):

Методи цього, які я знайшов поки що, такі

  1. завантаження старої версії Python та використання pyinstaller/py2exe
  2. створення віртуального середовища в Python 3.6, що дозволить мені зробити 1.
  3. завантаження перетворювача Python в C ++ і використання цього.

Ось що я спробував / з якими проблемами зіткнувся.

  • Я встановив pyinstallerперед цим потрібне завантаження (pypi-щось), щоб воно не працювало. Завантаживши необхідний файл, він pyinstallerвсе ще не розпізнає його.
  • Якщо я налаштовую virtualenv в Python 2.7, чи потрібно насправді встановити Python 2.7?
  • аналогічно, єдиний перетворювач python для C ++, який я бачу, працює лише до Python 3.5 - чи потрібно мені завантажувати та використовувати цю версію при спробі цього?

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 були б найкращими для вас. Але працевлаштування тих, хто працює, - саме по собі досягнення.
Тетора

Чи буде це працювати в Python 3.5.3? (Остання стабільна версія на Debian 9 Stretch).
Джерард

Як я можу імпортувати from sklearn.externals import joblib? як згадувалося в редагуванні, крок 2.
Джек

77

Python 3.6 підтримується PyInstaller.

Відкрийте вікно cmd у вашій папці Python (відкрийте командне вікно та скористайтеся cdклавішею клавіші миші клавішею клавіші правою кнопкою миші та виберіть "Відкрити вікно команд тут"). Тоді просто введіть

pip install pyinstaller

І це все.

Найпростіший спосіб його використання - ввівши у командному рядку

pyinstaller file_name.py

Детальніше про те, як ним користуватися, подивіться на це питання .


4
щойно перевірений python 3.7.0. Хоча багато попереджень, але складено успішно та працює на Windows 10
Ole_S

2
Я склав програму з python 3.5.0, без попереджень і помилок, і вона працює як очікувалося
Menotdan

Хтось знає, що має значення в Pyinstaller? Чи буде exe-побудова на Windows 10 працювати в Windows 8? чи буде працювати вбудована система Windows 10 32-бітовий в Windows 10 64-бітові системи?
Derik81

27

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

GUI:

Авто-пі в Exe

Вихід:

Вихідні дані


2
Ви повинні були згадати, що для нього потрібен MVC ++. помилка: Потрібно Microsoft Visual C ++ 14.0.
SKR

3
Я не знаходжу в цьому ніякого значення, оскільки він побудований на pyinstaller, і якщо ви отримаєте помилку в pyinstaller, ви також матимете його тут!
CV_passionate

9

Я не можу сказати вам, що найкраще, але інструментом, яким я успішно користувався в минулому, був cx_Freeze . Вони нещодавно оновили (7 січня '17 р.) До версії 5.0.1 і вона підтримує Python 3.6.

Ось піпі https://pypi.python.org/pypi/cx_Freeze

Документація показує, що існує кілька способів зробити це, залежно від ваших потреб. http://cx-freeze.readthedocs.io/en/latest/overview.html

Я ще цього не пробував, тому збираюся вказати на пост, де обговорювався простий спосіб зробити це. Деякі речі можуть або не можуть змінитися, хоча.

Як я можу використовувати cx_freeze?


11
Варто згадати, що cxFreeze не робить однофайлових файлів.
Едді Харт

7

Я використовую Nuitka та PyInstaller зі своїм пакетом, PySimpleGUI.

Нуїтка Виникли проблеми з компіляцією tinkter з Nuikta. Один із учасників проекту розробив сценарій, який вирішив проблему.

Якщо ви не використовуєте tkinter, він може "просто працювати" для вас. Якщо ви використовуєте tkinter, скажіть так, і я спробую опублікувати сценарій та інструкції.

PyInstaller Я працюю 3.6 і PyInstaller чудово працює! Команда, яку я використовую для створення свого EXE-файлу:

pyinstaller -wF myfile.py

-WF створить єдиний EXE-файл. Оскільки всі мої програми мають графічний інтерфейс, і я не хочу показувати вікно команд, опція -w приховає вікно команд.

Це так само, як отримати те, що схоже на програму Winforms для запуску, написане на Python.

[Оновлення 20 липня-2019]

Існує рішення на основі PySimpleGUI GUI, яке використовує PyInstaller. Він використовує PySimpleGUI. Це називається pysimplegui-exaker і його можна встановити.

pip install PySimpleGUI-exemaker

Щоб запустити його після встановлення:

python -m pysimplegui-exemaker.pysimplegui-exemaker


5

Тепер ви можете конвертувати його за допомогою PyInstaller. Я працюю навіть з Python 3.

Кроки:

  1. Запустіть ваш ПК
  2. Відкрити командний рядок
  3. Введіть команду pip install pyinstaller
  4. Коли він встановлений, використовуйте команду 'cd', щоб перейти до робочого каталогу.
  5. Виконати команду pyinstall <filename>

Чому люди заперечують це? Я просто публікую цю відповідь заради допомоги.
Техас Джоші

3
тому що він не працює на Python 3.6, який OP спеціально написав, що він використовує.
URI

Pyinstaller повинен працювати зараз. Якщо це не так, то скажіть мені в коментарях
Tejas Joshi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.