Как мне скомпилировать скрипт PyQt (.py) в один автономный исполняемый файл для windows (.exe) и / или linux? - PullRequest
42 голосов
/ 04 мая 2011

Я начал возиться с PyQt и создал «красивый» скрипт из примера приложения pyqt whitepaper ( pastebin )

Отлично работает в Windows и Linux (со средой qt, уже установленной на обоих).

Теперь мой вопрос: поскольку я пытаюсь использовать Qt, потому что он скомпилирован (по крайней мере, на чистом старом Qt на основе C ++), как я могу скомпилировать какой-нибудь файл .exe для запуска в Windows или автономный исполняемый файл для Linux.

Дело в том, что я хочу, чтобы программа компилировалась из-за скорости и переносимости, а не интерпретировалась из исходного кода, что потребовало бы предварительной настройки на любом компьютере. Например, одной из целей является отправка небольших сценариев gui по электронной почте сотрудникам, которые вообще не являются программистами.

Ответы [ 6 ]

38 голосов
/ 07 мая 2011

Если вы хотите полностью создать один автономный исполняемый файл, вы можете попробовать это: http://www.pyinstaller.org/. я чувствую, что лучше создать один исполняемый файл, чем cx_freeze или py2exe (по моему опыту). и прост в использовании (полная документация доступна на сайте).

Обновление: Как последняя информация от @SoursopTree и @LectureMaker, теперь она поддерживает Python версии 3.3 - 3.6.

Обновление: передать - аргумент onefile , если вы хотите создать полностью автономный .exe. в примере:

pyinstaller.exe --onefile --windowed app.py

Обновление: еще одна интересная библиотека, автор которой утверждает, что вы можете создавать кроссплатформенные настольные приложения. Стоит попробовать https://build -system.fman.io /

14 голосов
/ 01 июня 2018

Потратив на это много недель и попробовав все альтернативы - PyInstaller, py2exe, cx_freeze, ... - я создал свою собственную библиотеку: https://build -system.fman.io / . Он основан на PyInstaller, но решает многие из его общих болевых точек. Он также позволяет создавать собственные установщики для Windows, Mac и Linux.

4 голосов
/ 05 мая 2011

Вы можете проверить cx_freeze .Он утверждает, что создает исполняемые файлы, которые являются «кроссплатформенными и должны работать на любой платформе, на которой работает сам Python».

Я сталкивался с этим при изучении пакета moneyGuru , который использует PyQt.Я загрузил файл moneyguru.exe в свою систему Windows XP, выполнил его, и он отлично работал на Python 3.2.

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

1 голос
/ 02 ноября 2015

Поскольку я пытаюсь использовать Qt, потому что он скомпилирован

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

Два других варианта:

  1. Примите интерпретированную природу Python: попросите людей, с которыми вы делитесь своей программой, установить Python и его зависимости. Вы можете значительно упростить этот процесс. Ex. в Linux используйте менеджер пакетов.
  2. Напишите вашу программу на C ++. Это позволит вам по-настоящему скомпилировать единый собственный исполняемый файл. К сожалению, это означает удаление Python, но есть причины, по которым люди все еще пишут код на менее красивых языках, таких как C ++, и кажется, что вы можете столкнуться с некоторыми из них.
0 голосов
/ 12 июля 2018

Я использую pyinstaller

pip install pyinstaller

Не знаю, но pyinstaller не добавляет sip.pyd. Итак, вам нужен PyQt5 \ sip.pyd . Я рекомендую хороший стиль Windows qwindowvistastyle.dll .

Сделать build.cmd файл как:

pyinstaller --onefile --clean ^
    --add-binary="C:\Users\Quazer\.virtualenv\pyqt5-36\Lib\site-packages\PyQt5\sip.pyd;PyQt5" ^
    --add-binary="C:\Users\Quazer\.virtualenv\pyqt5-36\Lib\site-packages\PyQt5\Qt\plugins\styles\qwindowsvistastyle.dll;PyQt5\Qt\plugins\styles" ^
    .\main.py

^ - новая строка в командном файле (.cmd, .bat)

0 голосов
/ 04 мая 2011

Существует модуль с именем Py2EXE, который будет делать именно то, что вы хотите сделать. Он преобразует скрипт в файл .exe для запуска в Windows. Я не уверен насчет Linux, но держу пари, что где-то есть модуль. py2exe.com

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...