如何使用Python创建Mac OS X应用程序?

时间:2011-08-31 18:39:33

标签: python wxpython macos py2app

我想创建一个适用于Windows和Mac的GUI应用程序。为此,我选择了Python。

问题出在Mac OS X上。

有两种工具可以为Mac生成“.app”:py2app和pyinstaller。

  1. py2app非常好,但它在包中添加了源代码。一世 不希望与最终用户共享代码。
  2. Pyinstaller生成UNIX可执行文件,那么如何在Mac上运行它?一世 用这个可执行文件创建了一个包,但结果是“.app” 不工作。
  3. 问题是:

    1. 如何配置py2app以包含源代码 可执行文件,所以最终用户将无权访问我的程序?
    2. 如何将UNIX可执行文件转换为Mac“.app”?
    3. 有没有办法用GCC编译Python代码?
    4. 在Windows中很简单,我用Python代码创建了一个“exe”文件 有用。是否可以为Mac创建单个文件“app”?
    5. P.S。我使用两台计算机(Windows和Mac),Python 2.7,wxPython,py2exe,py2app和pyinstaller。

      此外,我已查看过这些网站:

11 个答案:

答案 0 :(得分:8)

  

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

除非你非常认真地攻击python解释器(并包含受损版本),否则没有什么好方法可以隐藏来自技术熟练和坚定的用户的源代码。我坚信在Windows上也是如此。基本上,无论您是包含真源还是字节码,都可以恢复非常干净的源版本。更重要的是,在我看来,除非你包含实际的源代码(而不是字节码,否则你将引入对解释器版本的可能依赖性)。

  

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

UNIX可执行文件是什么意思? Darwin(OS X)二进制文件[实际上并不是UNIX]?这可以使用您已经提到的各种工具来完成,但必须小心谨慎以避免库依赖。

如果您只想要一个简单的包装器将命令行二进制文件放入窗口中,那么它很容易实现,并且免费的XCode套件有几个可用的示例(取决于输出的内容) 如果有的话,你想交付。

  

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

GCC不编译Python。它是一种不同的语言(虽然gcc系列中的工具支持多语言前端,但不支持Python)。有些工具试图将Python转换为C,然后您可以将其编译为真正的二进制文件,但这仅适用于避免某些类型的构造的程序,并且流程(和限制)也需要应用您的库。
    一个允许这个的项目是Cython。它适用于某些类型 代码,主要是数字代码,但安装和安装并不容易 利用,特别是如果你想生产多个运行的东西 不同的电脑。

  

在Windows中它很简单,我创建了一个" exe"来自Python代码的文件和它   作品。是否可以创建单个文件" app"对于Mac?

我不得不说我对此持怀疑态度 - 非常怀疑。就像OS X案例一样,exe几乎肯定会在其中简单地访问源代码。

一个相当简单的技巧是加密源代码,然后动态解密,但这样做 在我看来,它似乎比它值得更多麻烦。

答案 1 :(得分:6)

PyInstaller将在Mac OSX下自动创建用于窗口化可执行文件的软件包。运行ypinstaller.py时,请确保传递选项“--windowed”。

此功能记录在pyinstaller的网站

答案 2 :(得分:5)

如果您没有完全致力于wxPython(以及其他寻找跨平台Python GUI框架的人),我建议您查看Kivy。它是跨平台的,GPU加速的,它会为你做app packaging。它很容易进入,拥有深思熟虑的架构,并在界面方面为您提供了令人难以置信的灵活性。这是我发现制作跨平台Python GUI应用程序的最佳方式。

答案 3 :(得分:4)

cxFreeze 是您的选择。 我用它将我的python程序打包到Mac OS X应用程序。这就像一个魅力。

答案 4 :(得分:2)

Automator已被提及为包含在单个文件中的Pythons脚本的快速而简单的解决方案,但由于Automator UI有很多选项,并且如何实际执行它并不明显,我将提供逐步说明(已经过验证可以在约塞米蒂工作):

  1. 在Automator中选择文件> 并选择应用作为文档类型。
  2. 接下来,确保选中左侧的操作标签,然后在搜索框中输入run。在其他选项中,您将看到运行Shell脚本 - 双击它,并在右侧面板中显示一个编辑器窗口。
  3. Shell 下拉菜单中选择 / usr / bin / python
  4. 将Python代码粘贴到编辑窗口中,然后选择 File > 保存
  5. 默认情况下,该应用会保存在$HOME/Applications下,并会显示在Spotlight中。

    如果您希望能够设置自己的图标并拥有一些奇特的功能,例如带有菜单,日志窗口等的任务栏图标,那么请查看Platypus - open-source应用用于创建MacOS本机包。

答案 5 :(得分:1)

2:您无法“转换”它,但您可以将可执行文件移动到。App.app/Contents/MacOS/something。文件中,CFBundleExecutable设置为“某事”。通常不建议这样做。

答案 6 :(得分:0)

有动力的人可能会从您应用中的Python字节码重建可用的源代码,因此您可能会重新考虑您对py2app的反对意见。如果您不信任最终用户,为什么要与他们做生意?

答案 7 :(得分:0)

唯一的方法是py2app。你别无他法。抱歉。 你做的研究似乎非常扎实,你没有错过任何东西。

答案 8 :(得分:0)

为Windows用户使用了py2exe,因此他们不必处理库版本,我已经拆开了已编译的程序,它们包含了python字节码文件。虽然您可以将其视为违反许可证以查看其中的内容,但事实是,如果计算机可以执行它们,我可以阅读它们。可以通过C预处理器(尝试在google上查找2c.py)使用gcc编译python程序,我不知道它们是否支持GCC。同样,您不会通过使用它们获得任何安全性,但您可以显着提高速度。

答案 9 :(得分:0)

我没有尝试过大型Python项目,但对于我自己的脚本,我找到的最简单的方法是使用Automator

您可以使用运行Shell脚本操作以交互方式创建应用项目,然后在其编辑器中粘贴脚本,选择您的shell程序(/ usr / bin / python),最后保存项目。你有自己的Mac原生应用程序。

Automator也可以由AppleScript驱动。因此,您可以将此py-2-app转换过程传递给构建脚本。

我从来没有用它测试过GUI程序,所以我不知道你是否对它感到满意。但是我试试看,因为你可能想知道所有引用的第三方python模块/应用程序是如何维护的,以及它们将持续多久。与OS X捆绑在一起,Automator可能会留下来,除非Apple真的厌倦了它。

答案 10 :(得分:0)

cxFreeze是目前可用的最佳解决方案,首先使用python创建程序或应用程序,然后为应用程序制作setup文件,然后使用构建命令python setup.py build来构建应用程序。您的要求需要进行一些更改。