Python – IronPython的困境

我开始学习Python,现在我非常喜欢它。 但是,如果你只是回答一些令我困扰的问题,而我却找不到明确的答案:

  1. 在语言兼容性方面,Python的C实现(来自python.org的主要版本)和IronPython之间有什么关系? 它是一样的语言,我通过学习一个,将能够顺利地跨过另一个,或者是Java到JavaScript?

  2. IronPython库的当前状态是什么? 它落后于CPython库多less钱? 我主要感兴趣的是numpy / scipy和f2py。 它们是否可用于IronPython?

  3. 从Python中访问VB的最好方法是什么?另一种方式是将Python的库连接到Excel的VBA上?

1)IronPython和CPython共享几乎相同的语言语法。 他们之间的差别很小。 过渡应该是微不足道的。

2)IronPython中的库与CPython非常不同。 Python库是相当的落后 – 在IronPython下,很多CPython可访问的库都不能工作(当前)。 但是,IronPython可以直接访问整个.NET Framework,这意味着它拥有本机可访问的最广泛的库之一,所以在很多方面它远远领先于CPython。 一些numpy / scipy库不能在IronPython中工作,但由于.NET的实现,一些function是没有必要的,因为perf。 特点是不同的。

3)访问Excel使用IronPython,VBA会更容易,如果你使用的是VBA。 如果你想自动化excel,IronPython还是比较容易的,因为你可以访问Execl主互操作程序集,并且可以使用C#和VB.NET相同的库直接自动化它。

在语言兼容性方面,Python的C实现(来自python.org的主要版本)和IronPython之间有什么关系? 它是一样的语言,我通过学习一个,将能够顺利跨过另一个,或者是Java到JavaScript?

同样的语言(现在是2.5级 – IronPython不是2.6还没有AFAIK)。

IronPython库的当前状态是什么? 它落后于CPython库多less钱? 我主要感兴趣的是numpy / scipy和f2py。 它们是否可用于IronPython?

在今天的IronPython中,标准库已经处于一个很好的状态,就像你提到的那样,大量的第三方扩展也是如此。 numpy开始变得可行,这要归功于ironclad ,但是IronPython并不像numpy那样生产水平(正如0.5版本ironclad所见证的那样)。 scipy是巨大的,庞大的,充满了C编码和Fortran编码的扩展:我没有第一手的经验,但我怀疑在CPython之外的任何实现下,甚至还有不到一半会运行,更不用说完美运行。

从Python中访问VB的最好方法是什么?另一种方式是将Python的库连接到Excel的VBA上?

IronPython应该通过.NET方法使它更容易,但是CPython在win32all中通过COM实现并不那么远。

最后但并非最不重要的,看看IronPython的行动 – 正如我所说的每一次我推荐它,我有偏见(由于一直是一个技术审查人员,并与一个作者的友谊),但我认为这是客观上是为.NET开发人员提供的最好的Python入门介绍,同时也是Python for Python最好的介绍。

如果你需要所有的scipy (WOW,但这是一些 “文艺复兴时期的人”计算科学家!),CPython是今天唯一真正的select。 我相信其他大的扩展(PyQt,或者说Mayavi)处于类似的状态。 为了深入整合到今天的Windows,我认为IronPython可能有优势。 对于通用的用途,CPython可能会更好(尤其要感谢2.6中的许多新特性), 除非您真的热衷于在单个进程中使用多个核心,在这种情况下,IronPython(即GIL-更less)可能再次certificate是有利的。

这种或那种方式(或者甚至通过Jython在JVM上,或者通过PyPy在特殊的环境中)Python肯定是一种非常棒的语言,不pipe你为给定的应用程序select什么实现方式!)注意,你不需要粘贴(尽pipe你应该select一个VERSION – 2.5,以便与IronPython,Jython,Google App Engine等最大兼容; 2.6如果你不关心任何部署选项,除了“在我自己的机器上的CPython或虚拟控制“;-)。

  1. IronPython版本2.0.2是当前版本,支持Python 2.5语法。 随着下一个版本2.6(预计在未来一个月左右)(尽pipe我不确定这个团队是否设置了一个硬性发布date,这里是testing版 ),它们将支持Python 2.6语法。 所以,更less的Java到JavaScript和更多的Java到J#:-)
  2. 所有使用Python编写的库都可以完美地工作。 用C语言编写的问题更多。 有一个名为Ironclad的开源项目(完全公开:由我公司开发和支持),目前版本为0.8.5,支持numpy相当不错,但不包括所有的scipy。 我不认为我们已经用f2py进行了testing。 (Alex Martelli下面提到的Ironclad版本已经过了一年了,请避开那个!)
  3. 从IronPython调用常规的VB.NET非常简单 – 你可以很容易地实例化.NET类和调用方法(静态或实例)。 调用现有的VBA代码可能会更棘手。 有一些名为Pyinex和XLW的开源项目,你可能想看看。 另外,如果你想要一个电子表格,你可以用Python编码,那么总是有Resolver One (另一个来自我的公司… 🙂

1)由CPython和IronPython实现的语言是相同的,或者最多只有一个或两个版本。 这与Java和Javascript的情况没有什么两样,Java和Javascript是两种完全不同的语言,由一些骨头营销决策给予类似的名字。

2)用C语言实现的第三方库(如numpy)必须仔细评估。 IronPython有一个执行C扩展的工具(我忘了名字),但是有很多缺陷,所以你需要和每个库的维护者

3)我不知道。

  1. CPython由C实现相应的平台,如Windows,Linux或Unix; IronPython是由C#和Windows .Net Framework实现的,所以它只能在Windows平台上运行.Net Framework。 对于文法来说,两者都是一样的。 但是我们不能说他们是同一种语言。 当你在Windows平台上开发时,IronPython可以使用.Net Framework。
  2. 到目前为止,2009年7月21日 – IronPython 2.0.2,我们最新的稳定版IronPython发布了。 你可以参考http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython
  3. 您可以通过IronPython访问VB .Net框架function。 所以,如果你想掌握IronPython,你最好多学习一下.Net Framework。