我正在尝试将我编写的程序(使用 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,它有一个用于打包的命令。