如何用Python创建Mac OS X应用?

39 投票
11 回答
57631 浏览
提问于 2025-04-17 00:58

我想创建一个可以在Windows和Mac上运行的图形界面应用程序,所以我选择了Python。

但是在Mac OS X上遇到了一些问题。

有两个工具可以生成Mac的“.app”文件:py2app和pyinstaller。

  1. py2app还不错,但它会把源代码也放进包里。我不想把代码分享给最终用户。
  2. Pyinstaller生成的是UNIX可执行文件,那我该怎么在Mac上运行呢?我用这个可执行文件创建了一个包,但生成的“.app”文件无法正常工作。

我有几个问题:

  1. 怎么配置py2app,让源代码包含在可执行文件里,这样最终用户就无法访问我的程序?
  2. 如何将UNIX可执行文件转换成Mac的“.app”文件?
  3. 有没有办法用GCC编译Python代码?
  4. 在Windows上很简单,我从Python代码创建了一个“exe”文件,并且可以正常工作。能不能为Mac创建一个单独的“app”文件?

附注:我使用了两台电脑(Windows和Mac),Python 2.7,wxPython,py2exe,py2app和pyinstaller。

另外,我还查看了这些网站:

11 个回答

6

如果你还没有完全决定使用wxPython,或者你在寻找一个可以在不同平台上使用的Python图形界面框架,我推荐你看看Kivy。它支持多种平台,能利用显卡加速,而且可以帮你处理应用打包的工作。Kivy上手简单,架构设计得很合理,在界面方面给了你很大的灵活性。对我来说,这是制作跨平台Python图形界面应用的最佳选择。

8

PyInstaller会在Mac OSX上自动为窗口程序创建打包文件。当你运行ypinstaller.py的时候,记得加上这个选项“--windowed”。

这个功能在PyInstaller的网站上有详细说明。

10

如何配置py2app将源代码包含在可执行文件中,这样最终用户就无法访问我的程序?

除非你非常深入地修改Python解释器(并且包含修改过的版本),否则没有什么好的方法可以让一个技术水平中等且决心强烈的用户看不到源代码。我相信在Windows上也是如此。基本上,无论你是包含真实的源代码还是字节码,干净的源代码都可以被恢复。更重要的是,我认为如果你不包含实际的源代码(而不是字节码),你可能会引入对解释器版本的依赖。

如何将UNIX可执行文件转换为Mac的“.app”文件?

你所说的UNIX可执行文件是什么意思?是Darwin(OS X)二进制文件吗?这可以使用你已经提到的工具来完成,但必须小心,以避免库依赖问题。

如果你只是想要一个简单的包装器,把命令行二进制文件放进一个窗口里,这很简单,免费的XCode套件里有几个例子可以参考(具体取决于你想要输出什么,如果有的话)。

有没有办法用GCC编译Python代码?

GCC并不能编译Python。它是另一种语言(虽然GCC家族里有支持多种语言前端的工具,但不包括Python)。有一些工具试图将Python翻译成C,然后你可以将其编译成真正的二进制文件,但这只适用于避免某些构造的程序,而且这个过程(以及限制)也需要适用于你的库。
一个可以实现这个的项目是Cython。它对某些类型的代码(主要是数值代码)效果很好,但安装和使用起来并不简单,尤其是如果你想要生成可以在多台不同计算机上运行的程序。

在Windows上很简单,我从Python代码创建了一个“exe”文件,它可以工作。是否可以为Mac创建一个单文件“app”?

我得说我对此持怀疑态度——非常怀疑——就像OS X的情况一样,exe文件几乎肯定在里面可以轻易访问源代码。

一个相对简单的办法是加密源代码,然后在运行时解密,但我觉得这似乎麻烦得不值得。

撰写回答