[英]How to create a Mac OS X app with Python?
我想创建一个应该在Windows和Mac上运行的GUI应用程序。 为此,我选择了Python。
问题出在Mac OS X上。
有两种工具可以为Mac生成“.app”:py2app和pyinstaller。
问题是:
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的网站中
cxFreeze是选择。 我用它将我的python程序打包到Mac OS X应用程序。 这就像一个魅力。
Automator已被提及作为包含在单个文件中的Pythons脚本的快速而简单的解决方案,但由于Automator UI有很多选项,并且如何实际执行它并不明显,我将逐步提供步骤说明(已验证可在优胜美地工作):
run
。 在其他选项中,您将看到Run Shell Script - 双击它,并在右侧面板中显示一个编辑器窗口。 默认情况下,应用程序将保存在$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真的厌倦了它。
一个有动力的人可能会从您的应用程序中的Python字节码重建可用的源代码,因此您可能会重新考虑您对py2app的反对意见。 如果您不信任最终用户,为什么要与他们做生意?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.