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

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

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

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

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

Ответ 1

Известным инструментом для компиляции любого приложения Python является PyInstaller. Он работает лучше, чем альтернативы, такие как cx_freeze или py2exe, по моему опыту.

Проблема с PyInstaller заключается в том, что она не решает все точки красок, связанные с упаковкой PyQt-приложений. Более специализированная библиотека, которая утверждает, что исправляет это, система сборки fman.

Ответ 2

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

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

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

Ваши два других варианта:

  • Объявите интерпретируемый характер Python: у вас есть люди, с которыми вы делитесь своей программой с помощью установки Python и зависимостей. Тем не менее, вы можете значительно упростить этот процесс. Ex. в Linux используйте диспетчер пакетов.
  • Напишите свою программу на С++. Это позволит вам действительно скомпилировать один, собственный исполняемый файл. Это, к сожалению, означает сброс Python, но есть причины, по которым люди все еще пишут код на менее красивых языках, таких как С++, и похоже, что вы можете столкнуться с некоторыми из них.