编译Pyqt4程序

编译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 并尝试编译它(所以我不确定是否有更好的替代方案)。

答案1

您实际上并没有编译它,而只是打包它。编译是将源代码转换为计算机本机指令集中的机器可读目标代码的过程。例如,您将 C 代码编译为可执行文件。

Python 不是编译型的,而是解释型的。但您仍可以通过将其添加#!/usr/bin/env python到任何脚本前面并将其标记为可执行来执行它们。

对于打包 Python 应用程序进行分发来说,它比你想象的要麻烦一些,但是Ubuntu 官方说明

另外,如果你正在开发快速安装 Ubuntu,它有一个用于打包的命令。

答案2

实际上python支持包装。你最好看看分布式实用程序或者安装工具用于打包您的 Python 包。我建议使用 Python 打包到特定发行版,因为它可以在任何发行版中使用。还可以看看使用这些工具进行打包的一些项目皮皮例如Django

相关内容