ironpython - 你如何使用 IronPython?

标签 ironpython

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。




9年前关闭。




我很想喝一些现代动态语言 koolaid,所以我相信 Michael Foord 的博客和播客上的所有内容,我买了他的书(并阅读了其中的一些),并且我添加了一个嵌入式 IPy 运行时到大约一年前的大型现有应用程序(尽管那是给别人的,我自己并没有真正使用它)。

现在我需要做一些相当简单的代码生成工作,我将在一些 .net 对象(自定义,C# 创作的对象)上调用一些方法,创建一些字符串,编写一些文件等。

尝试这个的经历让我觉得自己就像一个小男孩,认为他是唯一一个可以看到皇帝没有穿衣服的人。如果您使用 IronPython,我非常感谢您了解您如何处理它的以下方面:

  • 代码编辑 - 您是否使用没有 Intellisense 的 .NET 框架?
  • 重构——我知道大量的“重构”是关于解决与语言相关的繁重工作,所以如果 Python 足够轻量级,那么我们就不需要它,但在我看来,重命名之类的事情对于迭代开发质量代码至关重要,而不管语。
  • 严重的启动时间 - 解释型语言的优点之一是缺乏编译时间,导致快速交互式开发。不幸的是,我可以编译 C# 应用程序并以比 IPy 启动更快的速度启动它。
  • 交互式黑客 - IPy 控制台/repl 应该对此有好处,但我还没有找到一种好方法来获取您交互式到达的代码并将其保存到文件中 - 从控制台剪切和粘贴是相当不错的悲惨的。并且控制台似乎包含对您导入的 .NET 程序集的引用,因此如果您也在处理 C# 内容,则必须退出并重新启动它。在像 LinqPad 这样的东西上对 C# 进行黑客攻击似乎是一种更快、更简单的尝试方式(并且具有适当的智能感知)。你使用控制台吗?
  • 调试 - 这里有什么故事?我知道 IPy 团队中的某个人正在从事一个命令行爱好项目,但我只是说我并没有立即被命令行调试器所吸引。我真的不需要来自小 Python 脚本的调试器,但如果我要使用 IPy 进行脚本单元测试,我会的,例如。
  • 单元测试 - 我可以看到动态语言可能对此非常有用,但是是否有任何 IDE 测试运行器集成(例如 Resharper 等)。 Foord 书中有一章关于这个,我承认我还没有正确阅读,但它似乎确实涉及从命令提示符驱动控制台模式测试运行器,这感觉是使用的一个巨大的退步一个集成的测试运行器,如 TestDriven.net 或 Resharper。

  • 我真的很想相信这些东西,所以我仍然假设我错过了一些东西。我真的想知道其他人是如何应对国际极地年,特别是如果他们的方式不觉得像我们刚刚失去了15 years'值(value)工具的发展做。

    更新:(2010 年 7 月)
    这个问题看起来很过时,现在有官方 IronPython Tools for VSPyCharm两者都显示出很大的希望,而且在我写它的时候都没有。感谢所有回答的人。对于那些对没有自动重构工具感到满意的人,我可以建议您永远不要使用具有良好自动重构功能的 IDE。拥有之后,您会想知道为什么您认为自己曾经对查找替换感到满意,并且您再也不想在没有它的情况下工作了。如果不出意外,无需担心替换错误的文本位即可立即重命名标识符的能力改变了您命名内容的整个方法。

    最佳答案

    do you use the .NET framework without Intellisense?
    

    是的。我只在 IronPython 中使用 emacs。 “M-/”对我来说已经足够了。
    当我真的需要有关 SDK 的信息时,我偶尔会切换到 Reflector 和 MSDN。
    Refactoring
    

    当您说“重构”时,您实际上是指“自动重构”。
    我在编码时做了很多重构。有一些自动化可能会更好。
    但我对手动重构没问题。这也迫使我包括更多的测试。
    我从未广泛使用任何具有重构功能的 IDE,也许这就是原因
    我不痛苦。简单的搜索和替换对我来说很好。
    Crippling startup time
    

    是的,这是我的主要痛苦,尽管我正在研究带有 4G Ram 的 3GHz 四核,
    运行 359 个测试用例需要 50 秒。一半的时间(25s)是启动时间!!
    IronPython 在导入大模块时似乎执行了一些非常繁重的处理任务。
    我现在计划将我的测试分成几部分以减轻这种痛苦。
    Interactive hacking - Do you use the console?
    

    当我想尝试一些临时想法时,我偶尔会使用控制台。不要有问题。然而,大多数时候我将我的想法写进了单元测试中。
    Debugging - what's the story here?
    

    如果调试意味着断点和变量检查。我只对那些东西使用 print 语句。
    我正在开发的那种应用程序将继续存在并至少维护十年。
    为了处理有缺陷的代码,我只打赌三件事:可理解的代码、单元测试和广泛的日志记录。
    Unit testing
    

    我从来没有接近过你提到的任何工具。只需使用 unittest.TextTestRunner。
    除了可怕的启动时间,我没有任何其他提示。

    ** 更新 **

    我刚刚完成升级到 IPy 2.6B1 并获得了惊人的结果。启动时间从 25 秒减少到 6 秒,我的整体测试时间从 50 秒减少到 16 秒!!!

    惊人的 !

    关于ironpython - 你如何使用 IronPython?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/830651/

    相关文章:

    c# - 如何在 C# 中提取 IronPython 脚本参数的名称

    ironpython - Spotfire IronPython 脚本 : get Cross Table data

    bash - 从 Bash 命令在文本文件中查找和替换

    Python socket.close() 在脚本退出之前不起作用

    c# - BeautifulSoup 和 ASP.NET/C#

    python - 为什么 id( )'s result on IronPython equal to id()' s 在 Python 上没有结果?

    ironpython - 用于 Spotfire 中列表框过滤器的 Iron Python 脚本

    wpf - 如何在 Iron Python 中从 xaml 访问嵌入式字体

    .net - 在 Python 中调用具有引用参数的 .Net 函数

    sql - 使用 IronPython 在 SQL Server Analysis Services 上执行查询