Iron Python:Iron Python有什么用处

时间:2010-12-02 14:47:54

标签: .net python ironpython dynamic-language-runtime

我对python很感兴趣,但是我在.NET环境中工作,所以我正在研究Iron Python,并想知道它将用于什么。

你能写一个应用程序吗?或者是否为您的应用添加脚本语言?

你们是如何使用它的?

12 个答案:

答案 0 :(得分:25)

其中一个或两个:)

我不会声称知道IronPython的特定“目的”,但它肯定可以用于编写应用程序,而可以用于编写脚本更大的.NET应用程序。

除此之外,它还可以轻松地将Python开发人员简化为.NET世界。 (为什么不同时学习C#?来吧,水很可爱......)

答案 1 :(得分:8)

IronPython的最大好处是它可以将Python和.NET的世界紧密结合在一起。

如果你有用C#编写的库(程序集),你可以直接将它们导入IronPython并使用它们,如下所示:

import clr
clr.AddReferenceToFileAndPath('MyAssembly.dll')

import MyNamespace

c = MyNamespace.MyClass()

c.MyFunction()

这非常适合在编写脚本或甚至与IronPython解释器交互使用时重用现有的.NET代码。

普通的CPython需要Python .NET来做同样或类似的事情。根据我的经验,Python .NET大部分时间都可以工作,但并非总是如此,IronPython在从Python访问.NET方面提供了更为精彩的体验。

IronPython可能总是在标准库支持等方面落后于CPython的参考实现,但总的来说开发并不落后,因为它很难与CPython背景一起工作。

最后,CPython和IronPython之间有一些实质性的differences,人们应该注意这一点。示例 - 垃圾收集(前几天咬我...)。

答案 2 :(得分:7)

使用WPF的IronPython是设计我所知道的GUI的最有效方式。几乎所有下图所示的应用程序都是用IronPython编写的。出于性能原因,在C#或C ++ / CLI中只完成非常小的部分。

当然,你确实错过了一些WPF / C#集成,但你在生产力方面获得了更多。

alt text

IronPython也比CPython更容易扩展。您可以使用C ++代码并在其上添加一个小型C ++ / CLI包装器。 CPython没有什么比这简单。这就是我开始使用IronPython的原因,因为我厌倦了在CPython中为我的C ++代码编写包装器。 Boost.Python,SWIG等对我不起作用。

答案 3 :(得分:6)

  • IronPython只是另一个Python实现。您可以在任何其他任何使用Python实现的地方使用它。 (模数平台约束,当然 - 显然你不能在仅Java设备上使用IronPython。)
  • IronPython只是另一个.NET编译器。您可以在任何使用任何其他.NET语言的地方使用它。
  • IronPython不仅仅是另一个Python实现。这是一个Python实现,可以让您完全访问任何.NET库。
  • IronPython不仅仅是另一个.NET编译器。它是一个.NET编译器,可以让您完全访问任何Python库。
  • IronPython是适用于任何.NET应用程序,库和框架的可嵌入脚本引擎。

答案 4 :(得分:4)

我们将其用作软件内部的嵌入式语言。 我的博客上有一篇文章,但最近改用了一个新系统。您可以在此处找到存档版本(带有损坏的图像链接):

我们的现场工程师现在使用嵌入式语言动态测试, 我们的质量保证人们使用它来创建小脚本来测试硬件的所有功能等....

希望这有帮助。

答案 5 :(得分:4)

我认为Iron系列语言主要用于为平台添加更多风格,允许您使用您熟悉的语言进入.NET。它为将不同背景的新人带入.NET而降低了很多标准

即使语法是Python,实现仍然建立在CLR之上,如果您决定参加IronPython项目而不是说C#,最终产品将没有太大差异。

我有一些使用IronPython的经验并且觉得很好用(当然我有点喜欢这种语言)。 IronPython现在被微软视为一等公民,这也是您使用它时的印象。使用它的一个缺点是它没有像两种主要语言那样被广泛采用,在协作和维护代码库方面会产生一些问题。

我发现在执行首次在Python中实现的搜索算法的.NET端口时它特别有用。

关于向您的应用添加脚本功能,这可能不是IronPython的初衷,但它已经完成。 Umbraco CMS具有(或至少具有)使用Python作为其平台内的动态脚本语言来创建小部件的能力。有一个非常简洁的功能。

你应该继续尝试一下......在皮带上安装更多工具总是好的:)

答案 6 :(得分:2)

您可以使用它来编写在.NET平台上运行的Python代码。这对Python有用的任何东西都有好处。

Python语言是Python语言,无论如何。 IronPython是该语言的运行时实现 - 编译源代码的支持代码,创建一个虚拟机来执行生成的.pyc文件中的字节码,与OS通信以便发出命令将参数划分为sys.argv,以及所有其他有趣的东西。 (好吧,好吧,.NET平台本身也做了很多工作。:))

答案 7 :(得分:2)

我对IronPython的体验是将其用作引擎的一部分,可以在安装基础.Net应用程序后进行更改。 在Python的帮助下,我们描述了很多业务规则,可以从两个系统安装中进行更改。部分IronPython被用作插件语言。

与脚本语言的区别 - 编译后IronPython作为CLR代码执行。

答案 8 :(得分:2)

首先:IronPython实际上更像是编译器而不是最严格意义上的解释器 - 它将用于从python源文件生成.NET程序集。所以,是的,您可以编写应用程序以及.NET Framework可以执行的大多数操作。

IronPython的最大好处之一是它(有效地)没有GIL - 这意味着如果你要编写Python代码并且它是多线程的 - 你通常可以获得比CPython更好的性能无需跨越边界生成多个进程和pickle对象。它没有解决并发问题,但.NET提供了更强大的构造来处理它。我认为这是一个非常小众的利基,但肯定存在。

IronPython的python.org wiki页面列出了一系列关键区别:

答案 9 :(得分:1)

您可以在其中编写应用程序,您可以将其用作应用程序中的脚本语言。

它用于访问现有的Python库,如果需要,可以用Python编写代码的一部分,如果.NET语言似乎不适合该工作。

答案 10 :(得分:1)

我认为Resolver Systems使用IronPython构建了他们的产品。所以IronPython肯定会有一些现实世界的使用。

他们也将{NumPy]移植到IronPython和.Net。这肯定会扩大IronPython的吸引力。

答案 11 :(得分:1)

您可以将它用于很酷的事情,例如在您的应用程序中使用嵌入式Web服务器,可以使用其中一个可用的Python Web框架进行开发。开发比在应用程序中托管ASP.NET Web服务器更容易,更顺畅。例如,CherryPy附带了一个内置的Web服务器,通过一些小的修改,它可以与IronPython一起使用。