Я пытаюсь упаковать написанную мной программу (используя 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 и пытаюсь скомпилировать его (поэтому я не уверен, что есть лучшие альтернативы).
Вы на самом деле не компилируете, а просто упаковываете его. Компиляция - это то, где вы переводите свой исходный код в машиночитаемый объектный код в собственном наборе инструкций вашего компьютера. Например, вы компилируете код C в исполняемый файл.
Python не компилируется, он интерпретируется. Но вы все равно можете выполнить их, добавив #!/usr/bin/env python
к любому сценарию и пометив его как исполняемый.
С точки зрения упаковки приложения Python для распространения, это немного больше хлопот, чем можно было бы надеяться, но есть официальные инструкции от Ubuntu .
Кроме того, если вы разрабатываете с Ubuntu Quickly , у него есть команда для упаковки.
На самом деле Python поддерживает упаковку . Вам лучше заглянуть в distutils или setuptools для упаковки вашего пакета python. Я рекомендую упаковку Python для конкретной дистрибутивной упаковки, так как она будет использоваться в любом дистрибутиве. Также посмотрите на некоторые проекты, которые используют эти инструменты для упаковки в pypi , например, Django .