问题标签 [ironpython]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何将 lambda 表达式从 IronPython 脚本传递给 C# 构造函数?
我正在将 IronPython 脚本引擎集成到我的 C# 光线跟踪器中,尽管我对 Python 完全陌生,但到目前为止,这很容易。不过,有一件事我需要帮助。我有一个 C# 类,它定义了这样的构造函数:
在 C# 中,我会像这样实例化它:
我不太清楚如何在 IronPython 中为 Action 对象进行类似的分配,那么 Python 语法看起来如何?
c# - 如何为 WinForms 应用程序创建类似 IDLE 的功能
我想向 C# WinForms 应用程序添加“类似 IDLE 的功能”,但我不太清楚如何做到这一点,也找不到任何对 Google 有用的东西。
所以基本上我想要交互式命令行界面,用户可以在其中输入一些 Python 代码并执行它(不仅仅是表达式,应该可以定义新函数)。
那么,从哪里开始呢?有没有好的教程或示例可用?
c# - 为 .NET 应用程序创建交互式 shell,并将脚本语言(如 python/iron python)嵌入其中
我正在使用标准 python 安装附带的教程学习 python。作者所说的关于 python 的好处之一是“也许你已经编写了一个可以使用扩展语言的程序,而你不想为你的应用程序设计和实现一种全新的语言”——我的问题是如何我开始设计一个可以使用 Python 交互扩展的程序(使用 c#)(为了实现这一点,我想我需要为 .net 程序创建某种“shell”或“交互”模式) ?
是否有关于如何设计具有交互式外壳的 .NET 程序的任何指示。然后我想在 shell 中使用 python 脚本来“扩展”或与程序交互。
编辑:这个问题部分源于 Miguel de Icaza 在 PDC 2008 期间提供的演示,他展示了交互式 csharp 命令提示符,我认为 C# 4.0 也具有此“编译器即服务”功能。我看了看,想在 .NET 中设计一个具有交互式 shell 的 Windows 或 Web 程序是多么酷……并且可以使用像 python 这样的脚本语言来扩展程序提供的功能。
此外,在阅读了 Steve Yegge 的一篇文章后,我开始考虑这种功能,他谈到了永生的系统。
.net - 在 Windows 上为 TDD 学习 Python
我有兴趣学习 python 以使用更敏捷的语言在我的 .NET 项目中编写测试。
IronPython 对于这些目的是否足够成熟?我满足于用 C# 编写测试,但发现像 ruby 和 python 这样的动态语言非常有吸引力。学习的时候放弃 IronPython,坚持使用官方版本 3 分发会更好吗?
我很想听听任何成功为 Ironruby 或 Ironpython 中的 .net 项目编写测试的人的来信。
编辑:修改了我的问题以解决在 .NET 中为 TDD 使用动态语言的真正问题——版本问题并不那么重要。为措辞不当的问题道歉。
shell - 如何在 IronPython/Mono 中运行 OS shell 命令?
我想试试 IronPython 和 Mono。专门做系统管理员任务。这通常意味着运行操作系统命令。在 CPython 中,我使用 subprocess 模块来完成此类任务。但是在 IronPython (v2.0.1, Mono 2.4, Linux) 中没有子进程模块。似乎甚至没有“操作系统”模块。所以我不能使用 os.system()。IronPython 在 CPython 中通常使用“subprocess”或“os.system()”来执行任务的方式是什么?
excel - 如何从 Excel 加载项运行托管的 Ironpython 1.1?
我正在编写一个托管 IronPython 1.1 的 Excel 加载项,并且我想将 Excel.Application COM 对象提供给 PythonEngine 实例。
我的 C# 可以很好地访问 COM 对象的成员。但是,当我的 IronPython 脚本访问 COM 对象的成员时,我收到“System.ArgumentException:'System.Int32' 类型的对象无法转换为'System.UInt32&' 类型。”
这是我托管 IronPython 1.1 的 C# 代码:
这是我的 IronPython 测试脚本:
excel.ActiveSheet.Range['A1'].Value2 = 42
// 抛出上面提到的异常
ironpython - 您如何使用 IronPython?
我热衷于喝一些现代动态语言 koolaid,所以我相信 Michael Foord 的博客和播客上的所有内容,我买了他的书(并阅读了其中的一些内容),并添加了一个嵌入式 IPy 运行时到大约一年前现有的大型应用程序(尽管那是给别人的,我自己并没有真正使用它)。
现在我需要做一些相当简单的代码生成工作,我将在一些 .net 对象(自定义、C# 编写的对象)上调用一些方法、创建一些字符串、编写一些文件等。
尝试这个的经历让我觉得自己像一个小男孩,认为他是唯一能看到皇帝没有穿衣服的人。如果您使用的是 IronPython,我非常感谢您知道您如何处理它的以下方面:
- 代码编辑 - 您是否使用没有Intellisense的 .NET 框架?
- 重构——我知道大量的“重构”是关于解决与语言相关的繁忙工作,所以如果 Python 足够轻量级,那么我们就不需要它了,但是在我看来,重命名之类的东西对于迭代开发高质量代码是必不可少的,无论语言。
- 严重的启动时间——解释语言的优点之一是缺乏编译时间,从而导致快速的交互式开发。不幸的是,我可以编译一个 C# 应用程序并以比 IPy 启动速度更快的速度启动它。
- 交互式黑客 - IPy 控制台/repl 应该对此有好处,但我还没有找到一种很好的方法来获取您以交互方式到达的代码并将其保存到文件中 - 从控制台剪切和粘贴是相当的悲惨的。并且控制台似乎包含对您已导入的 .NET 程序集的引用,因此如果您也在处理 C# 内容,则必须退出它并重新启动它。在诸如 LinqPad 之类的东西中对 C# 进行黑客攻击似乎是一种更快、更简单的尝试方法(并且具有适当的 Intellisense)。你用控制台吗?
- 调试 - 这里有什么故事?我知道 IPy 团队中的某个人正在开发一个命令行爱好项目,但可以说我并没有立即被命令行调试器所吸引。我真的不需要来自小 Python 脚本的调试器,但如果我使用 IPy 进行脚本单元测试,例如,我会这样做。
- 单元测试 - 我可以看到动态语言可能对此非常有用,但是否有任何 IDE 测试运行程序集成(如 Resharper 等)。福特的书有一章关于这个,我承认我还没有正确阅读,但它似乎确实涉及从命令提示符驱动控制台模式测试运行器,这感觉是使用的一个巨大的退步像 TestDriven.net 或 Resharper 这样的集成测试运行器。
我真的很想相信这些东西,所以我仍然假设我错过了一些东西。我真的很想知道其他人是如何处理 IPy 的,特别是如果他们以一种不觉得我们刚刚失去 15 年的工具开发价值的方式来做这件事。
更新:(2010 年 7 月)这个问题看起来已经过时了,现在有两个官方IronPython 工具用于 VS和PyCharm,它们都显示出很大的希望,而当我写它时,它们都没有出现。感谢所有回答的人。对于那些对没有自动重构工具感到满意的人,我是否可以建议您永远不要使用具有良好自动重构功能的 IDE。拥有之后,您会想知道为什么您认为自己对 find-replace 感到满意,并且您再也不想在没有它的情况下工作。如果不出意外,即时重命名标识符而不必担心替换错误的文本的能力会改变您命名内容的整个方法。
ironpython - 在 Asp.Net 中使用 Iron Python 时 ExtensionAttribute 的模糊参考
启动使用程序集的 Asp.Net 站点时出现以下错误,该程序集又使用 dlr 和 Iron Python 进行脚本编写。
BC30560:“ExtensionAttribute”在命名空间“System.Runtime.CompilerServices”中不明确。
这个问题似乎是已知的,并且在问题跟踪器中有一个解决方法。
然而,它说他们...
...希望在下一个版本中不需要此解决方法。
最新版本(我正在使用的版本)比报告中提到的版本晚。我还尝试下载问题跟踪器中提供的文件并替换当前版本中的文件,但这也不起作用。
除了下载源代码并手动构建之外,还有其他解决方案吗?
.net - Windows系统脚本+编程的建议
我刚刚得到一个项目,我必须在 Windows 操作系统上执行以下操作:
- 检测有多少驱动器(C:D:E:..etc)连接到当前系统
- 每个卷的系统标签是什么
- 每个驱动器有多少存储空间(已用和可用)
- 每个驱动器是什么格式(NTFS/FAT32)
- 这些驱动器中的给定目录中有多少文件
- 每个文件大小有多大
- 文件处理(每个文件大约 2GB),我必须做很多类似 C 的 fseek()、二进制数据解析以及大端到小端的转换。还要写一些逻辑代码。
我是一位经验丰富的 C\C++ 程序员,但我认为这将是我开始学习脚本的最佳时机。
我想到的候选人是:( Python || Ruby ) && PowerShell。
这些是我可以用 IronPython+Powershell 来完成的事情吗?还是有更好的工具/语言?
PS:PowerShell 是要取代 VBScript 吗?此外,既然存在 C#、WPF 和 Powershell,VB.net 有什么用处?