Python - IronPython的困境

时间:2009-09-10 02:30:16

标签: python excel vba ironpython python.net

我开始学习Python,现在我非常喜欢它。但是,如果你能为我回答一些问题,这些问题让我感到困扰,我找不到任何明确的答案:

  1. 在语言兼容性方面,Python的C实现(来自python.org的主要版本)和IronPython之间的关系是什么?它是同一种语言,通过学习一门语言,能够顺利地交叉到另一种语言,还是Java到JavaScript?

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

  3. 从Python访问VB的最佳方式是什么,以及其他方式(将某些python库连接到Excel的VBA,确切地说)?

5 个答案:

答案 0 :(得分:18)

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

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

3)如果您是从VBA进行操作,使用IronPython访问Excel VBA会更容易。如果您正在尝试自动化excel,IronPython仍然更容易,因为您可以访问Execl Primary Interop Assemblies,并且可以使用与C#和VB.NET相同的库直接自动化它。

答案 1 :(得分:11)

  

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

相同语言(目前为2.5级 - IronPython还不是2.6级AFAIK)。

  

目前的状态是什么   IronPython的图书馆?多少钱   它落后于CPython图书馆?我   最感兴趣的是numpy / scipy和   f2py。它们是否适用于IronPython   ?

标准库在今天的IronPython中处于一种很好的状态,巨大的第三方扩展就像你提到的那样。由于ironcladnumpy开始获得可行,但生产级别不是numpy来自IronPython(见{x的0.5版本号) {1}},& c)。 ironclad是巨大的,庞大的,充满了C编码和Fortran编码的扩展:我没有第一手经验但我怀疑不到一半甚至会运行,更不用说运行完美,除了CPython之外的任何实现。

  

访问的最佳方式是什么   来自Python的VB和另一种方式   (将一些python库连接到   确切地说是Excel的VBA?

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

最后但并非最不重要的是,一定要查看书籍IronPython in Action - 就像我每次推荐它时所说的那样,我有偏见(因为它曾经是一位科技评论家,并且与一位作家有着友谊)但我认为它是客户端Python开发人员的最佳介绍,同时也是.NET for Pythonistas的最佳介绍。

如果你需要所有scipy(WOW,但那是一些“Renaissance Man”计算科学家! - ),CPython真的是今天唯一真正的选择。我确定其他大型扩展(PyQt,比方说,或Mayavi)处于类似的状态。然而,为了深入集成到今天的Windows,我认为IronPython可能有优势。对于通用用途,CPython可能更好(特别是由于2.6中的许多新功能),除非你真的热衷于在单个进程中使用多个核心,其中案例IronPython(无GIL)可能再次证明是有利的。

这种或那种方式(甚至通过Jython在JVM上,或通过PyPy在特殊环境中)Python无疑是一种非常棒的语言,无论您为给定的应用程序选择什么实现! - 请注意,您不需要需要坚持使用一个实现(尽管你应该选择一个VERSION - 2.5以最大限度地兼容IronPython,Jython,Google App Engine等; 2.6如果你不关心任何部署选项,除了“CPython在我的机器下拥有唯一或虚拟控制“; - )。

答案 2 :(得分:2)

  1. 当前版本的IronPython 2.0.2版支持Python 2.5语法。在下一个版本2.6中,预计在接下来的一个月左右(虽然我不确定团队是否设置了硬发布日期;这里是beta),但它们将支持Python 2.6语法。因此,Java的Java更少,J#更多的Java: - )
  2. 所有用Python编写的库都非常完美。用C语言编写的问题更多;有一个名为Ironclad的开源项目(完全披露:由我的公司开发和支持),目前版本为0.8.5,支持numpy相当不错但不包括所有scipy。我不认为我们用f2py测试过它。 (Alex Martelli在下面提到的Ironclad的版本已经超过一年了,请避免使用它!)
  3. 从IronPython调用常规VB.NET非常简单 - 您可以非常轻松地实例化.NET类和调用方法(静态或实例)。调用现有的VBA代码可能比较棘手;您可能需要查看名为PyinexXLW的开源项目。或者,如果你想要一个可以在Python中编码的电子表格,那么总是Resolver One(我公司的另一个......: - )

答案 3 :(得分:1)

1)CPython和IronPython实现的语言是相同的,或者至多是相隔两个版本。这与Java和Javascript的情况完全不同,Java和Javascript是两种完全不同的语言,它们通过一些骨头营销决策给出相似的名称。

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

3)我不知道。

答案 4 :(得分:0)

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