繁体   English   中英

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

[英]How to create a Mac OS X app with Python?

我想创建一个应该在Windows和Mac上运行的GUI应用程序。 为此,我选择了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”?

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

另外,我检查了这些网站:

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

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

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

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

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

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

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

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

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

一个相当容易的技巧是加密源代码,然后动态解密,但在我看来,这比它的价值更麻烦。

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

此功能记录在pyinstaller的网站中

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

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

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

  1. 在Automator中选择File > New并选择Application作为文档类型。
  2. 接下来,确保在左侧选择“ 操作”选项卡,然后在搜索框中键入“ run 在其他选项中,您将看到Run Shell Script - 双击它,并在右侧面板中显示一个编辑器窗口。
  3. Shell下拉菜单中选择/ usr / bin / python
  4. 将Python代码粘贴到编辑窗口中,然后选择“ 文件” >“ 保存”

默认情况下,应用程序将保存在$HOME/Applications ,并将显示在Spotlight中。

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

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

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

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

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

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

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

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

cxFreeze是最好的解决方案,首先使用python创建程序或应用程序,然后为您的应用程序创建安装文件,然后使用build命令python setup.py build应用程序,根据您的要求,您需要进行一些更改。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM