在 Mac 上进行 Python 开发的建议?

8
我大约一个月前买了一台低端的MacBook,现在终于开始配置Python。到目前为止,我大部分的Python工作都是在Windows上完成的,发现在OS X上选择有点令人畏惧。看起来至少有五个选项可用于Python开发:
- “库存”苹果Python - MacPython - Fink - MacPorts - 从源代码自行构建
就功能而言,对于2.5版本,库存Python还可以。但我想知道的是:为什么要在其中选择一个而不是另一个?
更新: 为了澄清,我正在寻找各种选项的讨论,而不是文档链接。我将这标记为社区Wiki问题,因为我认为没有“正确”的答案。感谢已经评论的每个人的见解。

你想要什么样的关于各种选项的讨论?请澄清你的问题。 http://wiki.python.org/moin/MacPython/Leopard 上的文件有什么问题?你想要看到哪些不在这个文件中的内容? - S.Lott
1
你链接的页面只提供了一种选择:将IDLE从MacPython添加到Apple的标准Python脚本中。我希望看到更多关于不同发行版的优缺点,包括个人经验和SO用户选择特定发行版的原因。 - technomalogical
1
我认为你想链接到http://wiki.python.org/moin/MacPython/PythonDistributionsForMac,但是那个页面非常简洁,并且提供了许多模糊的术语,比如“太复杂”和“太多...包”。此外,该页面没有列出许多替代方案的优点。我想知道是否有其他选择。 - technomalogical
11个回答

9

我认为使用Mac OS X自带的“原版”Python的一个优点是,它使得在其他Mac上部署变得轻而易举。我不知道你的部署场景是什么,但对我来说这很重要。我的代码必须在工作中的任意数量的Mac上运行,并且我尽量减少在所有这些系统上运行我的代码所需的工作量。


避免使用Fink -- 它会安装一些额外的东西,可能会让你不满意。请使用这个链接:http://wiki.python.org/moin/MacPython/Leopard - S.Lott
1
假设你可以容忍你的Python代码同样存在问题(我在过去两天里在Stack Overflow上指出了三个人们在现实世界中遇到的例子),并且在所有的Mac电脑上都是旧版本,这是一个有效的观点。 - popcnt
正如我所暗示的,这完全取决于您的部署要求。我不能期望所有机器都更新到Python 2.6或其他非标准配置。但这只是我在这个项目上的看法。 - Craig S

4
我强烈建议使用MacPortsPorticus来管理您的Python安装。虽然构建所有内容需要一些时间,但优点是您构建的任何内容都将针对相同的库进行构建,因此如果您希望您的Python内容能够与Apache、PostgreSQL等配合使用,就不必搞清楚静态链接共享对象等问题。
如果您选择这种方式,请记得安装python_select端口,并使用它使系统使用从MacPorts安装的Python。
作为额外的奖励,MacPorts拥有大多数主流Python egg的软件包,因此如果您应该能够让MacPorts为您保持最新版本的所有这些东西 :)

此外,PIL 的安装非常容易(这是我找到的唯一可用的)。 - zgoda
(这是一个旧问题,但我还是想说一句)。我强烈建议不要在Mac上使用macports安装Python,除非您不使用Python进行任何GUI操作或使用任何不常用的库。 - Fake Name
基本上,如果你使用基于macports的python,安装任何自定义的python包都非常困难,而且如果你这样做可能会让macports感到困惑(事实上,macports FAQ明确表示,你应该通过macports安装额外的python包,不应该以其他方式安装它们)。 - Fake Name
其次,如果你使用Python进行GUI编程,并安装了MacPorts的库,那么这些库将使用X11,而非本地的小部件。因此,它们看起来几乎都很丑陋,与其他苹果应用程序不协调。 - Fake Name

3

3

这取决于你使用Python的目的。如果你使用MacOS功能和PyObjC等内容,最好使用MacPython或由Apple提供的Python。

我在我的Mac上主要用Python开发服务器端应用程序,稍后将在FreeBSD和Linux上运行。为此,我使用了fink python几年,以及从那时起使用了MacPorts python。使用MacPorts可以轻松添加所需的c模块(例如数据库驱动程序等)。同时也很容易保留两个Python版本(在我的情况下是2.5和2.6)。

我曾经使用“自己编译”的Python来测试3.0之前的Python,但通常情况下,如果手工管理依赖项到c模块,则会感到痛苦。

由于easy_install,安装纯Python模块对于上述所有选项都是快速且简便的。

我从来不是一个很喜欢使用IDE的人。在开发中,我使用MacPorts安装的命令行subversion,Textmate和偶尔使用Expandrive 直接访问服务器上的文件。我个人非常依赖Bicyclerepairman for Textmade 来处理我的重构需求。

其他人似乎非常喜欢Eclipse & Pydev


3
从Enthought使用EPD怎么样? 是的,它很大,但它是一个框架构建,包括wxPython,vtk,numpy,scipy和ipython内置。

2

我建议使用Python虚拟环境,尤其是如果你使用Timecapsule的话,因为Timecapsule会备份所有内容,但不包括你添加到Python的模块!


我喜欢在虚拟环境中开发。这样可以轻松添加可能会干扰其他包的软件包。同时也可以清理基础系统。 - Matthew Schinckel
我同意,特别是随附的Python还带有一些附加库,可能会与您需要的新版本发生冲突(我在zope.interface中遇到了这个问题)。virtualenv 和您自己的Python安装可以防止这种情况发生。 - MrTopf

2

鉴于人们在Leopard python中遇到的错误和遗漏的数量(仅在SO上!),我不能推荐那个版本。例如,请参见:

我会选择MacPorts

它不会删除由Apple提供的现有python,因为它默认安装在/opt/local/bin中(与其兼容),而且很容易下载和安装其他python模块(甚至需要编译的二进制模块!)。我使用Porticus GUI来维护我的MacPorts已安装程序列表,包括python。


1

1
在我的Windows环境中,我使用Eclipse和PyDev,它们可以很好地配合使用,尽管有点简陋。显然,完全相同的环境也适用于Mac,因此建议下载Eclipse并使用内部更新软件功能使用URL http://pydev.sourceforge.net/updates/ 更新PyDev。要进一步了解PyDev,请查看这里

1

苹果提供的Python版本相当老旧 - 我的Tiger安装程序有2.3.5版本。这对您可能不是问题,但您会错过很多东西。此外,苹果公司可能会更新它。我不确定从2.3.5升级到(比如)2.4是否会导致代码出现问题,但我想这是有可能的。最近Perl用户就遇到了这种情况:http://developers.slashdot.org/article.pl?sid=09/02/18/1435227

Macpython是一个框架构建(我认为苹果也是如此)。老实说,我不确定这意味着什么,但这是某些模块的先决条件,特别是wxPython。如果您从macports或fink获取Python,则无法运行wxPython(除非通过X11运行)。


关于wxPython的观点很好,这是我没有考虑过的。苹果最近改善了他们对Python的支持,在Leopard中安装了2.5.2版本,但Perl问题也是一个值得提出的好观点。 - technomalogical

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接