Компиляция программы Pyqt4

Я пытаюсь упаковать написанную мной программу (используя Pyqt4) в один исполняемый файл для Linux. Я пытался использовать Pyinstaller, однако у него есть проблемы с импортом Gio (для настроек)

from gi.repository import Gio

Запуск приложения даст:

ImportError: cannot import name Gio

Затем я попытался использовать bbFreeze. Проблема в том, что после компиляции и запуска приложения я получаю следующее сообщение об ошибке:

TypeError: GObject.__init__() takes exactly 0 arguments (1 given)

Для bbFreeze это мой скрипт, который я запускаю для компиляции кода:

#!/usr/bin/env python

from bbfreeze import Freezer

includes = ["gio"]
excludes = []

bbFreeze_Class = Freezer('dist', includes=includes, excludes=excludes)

bbFreeze_Class.addScript("main.py", gui_only=True)

bbFreeze_Class.use_compression = 0
bbFreeze_Class.include_py = True
bbFreeze_Class()

Я использую Ubuntu 11.10 и Python 2.7. Если кто-то может помочь, это было бы здорово. Я впервые пишу на Python и пытаюсь его скомпилировать (поэтому я не уверен, что есть лучшие альтернативы).

2 ответа

Вы на самом деле не компилируете его, а просто упаковываете его. Компиляция - это то, где вы переводите свой исходный код в машиночитаемый объектный код в собственном наборе инструкций вашего компьютера. Например, вы компилируете код C в исполняемый файл.

Python не компилируется, он интерпретируется. Но вы все равно можете выполнить их, добавив #!/usr/bin/env python к любому скрипту и пометив его как исполняемый.

С точки зрения упаковки приложения Python для распространения, это немного больше хлопот, чем вы надеетесь, но есть официальные инструкции от Ubuntu.

Кроме того, если вы разрабатываете с Ubuntu Quickly, у него есть команда для упаковки.

На самом деле Python поддерживает упаковку. Вам лучше изучить distutils или setuptools для упаковки вашего пакета python. Я рекомендую упаковку Python для конкретной дистрибутивной упаковки, поскольку она будет использоваться в любом дистрибутиве. Также взгляните на некоторые проекты, которые используют эти инструменты для упаковки в pypi, например, Django.

Другие вопросы по тегам