【问题标题】:PyObjc and Cocoa on Snow Leopard雪豹上的 PyObjc 和 Cocoa
【发布时间】:2010-11-24 11:01:06
【问题描述】:

我即将开始我的 A-Level 计算项目(高中级别),该项目有望成为 Mac OS 的销售点应用程序。不幸的是,Objective-C 目前有点超出我的水平,如果我在项目中被它卡住,我没有人可以帮助,所以我会通过课程的部分并且无法进入大学。所以这对我来说很重要。

我想使用 Python 开发一个 Cocoa 应用程序。我知道我需要 PyObjc,但是网上的所有细节似乎都假设它是预先安装的。显然 Leopard 和 Snow Leopard 就是这种情况,但我似乎在 Snow Leopard 上没有它,也从未在 Leopard 上注意到它。另外,我尝试按照 Sourceforge 页面上的说明安装最新的 PyObjc 测试版,但没有成功。

如果有人能阐明需要安装什么、如何安装以及指向任何可以帮助我的资源或教程的链接,我将不胜感激。

提前感谢您的帮助!

更新:我发现这是一个受欢迎的问题,我刚刚获得了“值得注意的问题”徽章,所以我想我会更新任何访问此页面的人,了解我在获得答案。

很遗憾,我无法使用 Python 创建 Mac 应用程序。这在当时是相当令人失望的,但可能是一件好事。我用 C# 为我的项目制作了一个 Windows 应用程序,它是一个用于在模拟环境中创建和运行程序集应用程序的工具。我的课程老师现在已经开始使用我的工具而不是他自己的工具来教授课程了!我在计算项目上获得了非常高的分数(超过 90%),这有助于我在计算 A-Level 中获得 A*(可用的最高成绩),因此我进入南安普顿大学学习计算机科学。

今年夏天,我决定制作一个 iPad 应用程序(即将发布),我很高兴地说我知道我可以用 Objective-C 制作一个 Mac OS 应用程序,因为我觉得我已经学到了很多东西。我很高兴我花时间学习它,它是一门很棒的语言,并且在 iOS 变得如此流行时非常有用。

对不起所有的吹嘘,但我真的很高兴。我真正想说的是,如果您来到这个页面希望使用 PyObjc 轻松创建 Mac 应用程序,请不要打扰。这需要一些时间和一些努力,但是一旦你学会了 Objective-C,用它来创建应用程序真的很令人满意。祝你好运!

【问题讨论】:

  • 你试过用macports安装PyObjC吗?
  • 您是否安装了最新版本的开发者工具?我从未使用过 PyObjc,但我认为它不会比使用 Objective-C 更容易。它是一种易于学习的语言,并且由于 Mac OS X API 在设计时考虑到了它,因此它们可以很好地使用它。如果您不想担心内存管理,您甚至可以使用垃圾收集,但是内置的引用计数非常简单,以至于我从未想过使用垃圾收集。如果您想继续 Mac 开发,这也是您应该知道的。
  • 感谢您的回复,我会尝试使用 macports 安装 PyObjc,并且我有最新的 Xcode 3.2、开发工具和 SDK。我已经尝试过 Objective-C,并且我有一本书关于它,但是在过去作为一种爱好和高中课程只完成了基本的编程,我一直在努力解决它。我所做的 C# .NET 似乎要困难得多。此外,如果我不能让软件正常工作,就会有很多风险,如果出现问题,我不知道有谁能帮助我。如果我选择使用 PyObjc,至少我有一个有点 Python 大师的朋友。
  • 这很好,但是 Python 专业知识≠ PyObjC 专业知识。我有一个朋友(现在在亚马逊),他可能是我认识的最大的 Python 专家,但是当谈到 PyObjC 并来找我寻求帮助时,他完全被难住了。他或许可以帮助您设计一个 Python 后端,但不要指望他对与 Cocoa 的交互一无所知。祝你好运!
  • PyObjC is 默认安装在 Snow Leopard 上,至少作为 Xcode 工具的一部分。确保你已经做到了。此外,请注意第三方 Python 源,如 Fink、MacPorts,并自行构建,因为这些安装将没有有 PyObjC——如果你安装另一个 Python,你确实需要安装另一个 PyObjC也是。

标签: python cocoa xcode osx-snow-leopard pyobjc


【解决方案1】:

你的意思是Checkout? :-) 我只提到它是因为 Checkout 很漂亮,而且是用 PyObjC 编写的......

您的担忧是有道理的,尽管可能不像您想象的那么重要。使用 PyObjC 仍然需要您学习一些 Objective-C,并且肯定需要您至少了解一些 Cocoa 框架,因为当您需要执行某种 Cocoa 特定任务时,您需要调用 Cocoa 框架。

我建议您阅读并考虑 SO 问题 "Why is the PyObjC documentation so bad?""PyObjc vs RubyCocoa for Mac development: Which is more mature?",然后再完全说服自己“仅 PyObjC”会让事情变得更容易。我拒绝贬低 PyObjC,因为它非常强大且非常有用,但要意识到没有什么是灵丹妙药,也没有任何语言或技术可以解决所有问题。

Objective-C 语言简单明了。 Cocoa 框架通常主导着新 Cocoa 程序员的学习曲线。此外,您还有 StackOverflow 和许多其他资源来帮助回答您的问题。 (从"pyobjc" tag 的活动来看,你也更有可能在 SO 上获得好的Objective-C help。)

【讨论】:

    【解决方案2】:

    我自己几乎不使用 PyObjC,但我相信您需要在 Snow Leopard DVD 上运行 Xcode 安装程序才能使用 PyObjC。

    另外,正如 Quinn 所说,您至少需要了解一些 Objective-C 才能使用像 PyObjC 这样的 Cocoa 桥接器,而不会费尽心机。它只是不能完全隔离你。

    【讨论】:

      【解决方案3】:

      我同意奎因的观点。即使您已经精通 Python,学习如何连接 Python 和 Cocoa 也不会比使用 Objective-C 学习 Cocoa 容易。

      Objective-C 是一种简单、干净的语言,很容易上手。构建 GUI 并将其连接到后端将比学习 Objective-C 编写后端更难,而构建 GUI 并连接它并不难。

      关注the Cocoa app tutorial(你应该可以在一天内完成,或者如果你慢慢来的话,也许一个周末),你会顺利进行的。

      【讨论】:

        【解决方案4】:

        作为 Checkout 开发人员之一,我也会参与其中(嗨 Quinn!)。从我们所见,PyObjC 在 Snow Leopard 上运行得相当好。我们已经构建了最新的 SVN 修订版 2.2b 之一,在 Leopard 上进行了一些自定义,并且刚刚移到了 site-packages 文件夹。

        理论上,您应该能够使用内置的 Python/PyObjC(只需导入 objc、Foundation、AppKit),但是当我们发布/使用 Python 和 PyObjC 的自定义版本时,我不确定状态到底是什么.邮件列表没有提到很多人有问题(只有少数),所以这可能是一个好兆头。

        祝项目顺利,如果您有具体的 POS 问题,请给我发电子邮件;-)

        【讨论】:

          【解决方案5】:

          请允许我重复已经说过的话。我也是一个刚开始 Cocoa 开发项目的学生,一开始我想“好吧,我已经知道 Python,我就用 PyObjC 就可以省去学习 Objective-C 的麻烦了,这看起来超出了我的掌握。 "我很快就知道这是不可能的。您可以在不学习 Objective-C 的情况下为 OS X 进行开发,但不能不学习 Cocoa 库,这些库构成了您在 Objective-C 中编写 Cocoa 应用程序所需学习的 99%。 Objective-C 本身并不难。您需要在学习上投资 Cocoa 库。

          PyObjC 基本上使用 Cocoa 库和 Python 语法。我很快就放弃了,并决定如果我必须学习 Cocoa,我不妨使用 Objective-C。

          如果您想学习,Aaron Hillegass 的书是一个很好的起点。祝你好运!

          【讨论】:

          • 好吧,我不会在所有问题上发布cmets,但还是要感谢大家的支持。对此,我真的非常感激!我已经从光盘安装了开发人员的东西,但是 Xcode 中没有 PyObjc 的东西。我不愿意使用 Objc 的原因是,如果我被卡住了,可能会危及 Uni 的位置,而且考虑到我想学习 CS,我不能在这项工作中不拿 A。另外,感谢科恩!它实际上是我要编写的一个 POS 应用程序,而 Checkout 启发了我使用 PyObjc。再次感谢大家,我认为是你们说服了我使用纯 Objc。
          • 哦,我已经有了 Aaron Hillegass 的书,但它包含内存管理代码的事实让我有点害怕。
          • 仅供参考,我们用 Python 编写 Checkout 的最大原因是 SQLAlchemy,一个很棒的 ORM。我想如果不是这样,我也会使用 Obj-C。
          • 作为PyObjC近15年的维护者,直言不讳。使用 Objective-C。无论如何,您都需要了解 Objective-C 才能真正理解 Cocoa,而 PyObjC 只会添加一层对 99% 的 Cocoa 程序员来说陌生的错误和问题。
          • 如果您不想处理内存管理,请打开垃圾收集并忽略 Hillegass 书中的 MM 代码,或者将其包含在您的程序中。如果你开启了 GC,MM 代码不会做任何事情。
          【解决方案6】:

          我是一名长期的 Python 开发人员,现在已经做了一段时间的 iPhone 应用程序(并且只使用我的 Python 知识在运行脚本中为应用程序打包构建文件),然后开始制作一些 PyObjC 应用程序。

          我不得不说,PyObjC 仍然需要学习 Objective C(我已经通过 iPhone 开发人员知道了),但是如果你使用它,你会获得一些非常酷的好处

          • 轻松使用你知道的 python 库(更快)
          • 如果被 Cocoa 阻止,可以选择删除它并转到 wxPython
          • 开发时间稍快(您编写的代码更少,而且两种语言之间的翻译非常容易习惯)。

          另外,相对来说,interface builder 有点难以适应,但是如果你是一个 python 开发者,无论如何你并不完全习惯于一个函数式 gui builder :oP

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-01-10
            • 1970-01-01
            • 2012-12-10
            • 2011-03-05
            • 1970-01-01
            • 2012-05-06
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多