我想创建一个适用于Windows和Mac的GUI应用程序。为此,我选择了Python。
问题出在Mac OS X上。
有两种工具可以为Mac生成“.app”:py2app和pyinstaller。
问题是:
P.S。我使用两台计算机(Windows和Mac),Python 2.7,wxPython,py2exe,py2app和pyinstaller。
此外,我已查看过这些网站:
答案 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有很多选项,并且如何实际执行它并不明显,我将提供逐步说明(已经过验证可以在约塞米蒂工作):
run
。在其他选项中,您将看到运行Shell脚本 - 双击它,并在右侧面板中显示一个编辑器窗口。默认情况下,该应用会保存在$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)