标签: ironpython

使用IronPython简化为C#应用程序编写的DSL

感谢上一个问题的建议,我正忙着尝试使用IronPython,IronRuby和Boo为我的C#应用​​程序创建一个DSL.由于更大的用户和知识库,第一步是IronPython.如果我能在这里找到合适的东西,我可以停下来.

这是我的问题:

我希望我的IronPython脚本可以访问名为Lib的类中的函数.现在我可以将程序集添加到IronPython运行时并通过执行我创建的作用域中的语句来导入该类:

// load 'ScriptLib' assembly
Assembly libraryAssembly = Assembly.LoadFile(libraryPath);
_runtime.LoadAssembly(libraryAssembly);

// import 'Lib' class from 'ScriptLib'
ScriptSource imports = _engine.CreateScriptSourceFromString("from ScriptLib import Lib", SourceCodeKind.Statements);
imports.Execute(_scope);

// run .py script:
ScriptSource script = _engine.CreateScriptSourceFromFile(scriptPath);
script.Execute(_scope);
Run Code Online (Sandbox Code Playgroud)

如果我想运行Lib :: PrintHello,这只是一个hello world style语句,我的Python脚本包含:

Lib.PrintHello()
Run Code Online (Sandbox Code Playgroud)

或(如果它不是静态的):

library = new Lib()
library.PrintHello()
Run Code Online (Sandbox Code Playgroud)

如何更改我的环境,以便我可以在Python脚本中获得如下的基本语句:

PrintHello
TurnOnPower
VerifyFrequency
TurnOffPower
etc...
Run Code Online (Sandbox Code Playgroud)

我希望这些脚本对于非程序员来说很简单.我不希望他们必须知道课程是什么或它是如何工作的.IronPython真的就在那里,所以像for,do,if和基本函数定义这样的基本操作不需要我为我的DSL编写编译器.

.net c# dsl ironpython

10
推荐指数
1
解决办法
1160
查看次数

与其他.net语言相比,ironpython的速度如何?

我想为我所说的内容提供消息,但我没有它们,这是我听到的.

一旦编程教授告诉我,在某些特定项目中对.net和Python进行了一些软件基准测试,它给出了5:8的关系,支持.NET.这是他支持Python不比.NET慢得多的论点

这就是问题,我想尝试IronPython,因为我可以将我最熟悉的Web框架(asp.net)与我最喜欢的语言(Python)结合起来,我想知道asp.net中程序的速度在Python中使用VB.net或C#的ASP.NET程序的速度.有没有针对此的软件基准测试?

另外,与其他.NET语言相比,IronPython的速度不应该相似,因为IronPython不像Python那样必须编译成.NET中间代码吗?有人可以在这些问题上让我高兴吗?

问候

.net python performance ironpython

10
推荐指数
1
解决办法
6739
查看次数

如何用IronPython/Python给开发人员留下深刻印象

我需要一个IronPython\Python示例,它将向C#/ VB.NET开发人员展示这种语言到底有多棒.

我正在寻找一个易于理解的代码片段或应用程序,我可以使用它来演示Python的功能.

有什么想法吗?

python ironpython

10
推荐指数
3
解决办法
1786
查看次数

使用不同语言编写单元测试代码的(dis)优势是什么?

单元测试与生产代码有不同的要求.例如,单元测试可能不必像生产代码那样高效.

也许有时用一种更适合编写单元测试的语言编写单元测试是有意义的吗?我想到的具体示例是在C#中编写应用程序,但使用IronRuby或IronPython编写测试.

在我看来,使用IronPython和IronRuby比C#代码作为测试语言有几个优点:

  • 在动态类型语言中,模拟可以更简单
  • IronPython具有较少的冗长类型注释,在单元测试中不需要
  • 通过在解释器中键入命令,无需重新编译即可实验性地调用测试

使用两种不同语言进行测试和生产代码的权衡是什么?

.net c# ironpython unit-testing

10
推荐指数
2
解决办法
1353
查看次数

从C#构建Python脚本和调用方法

有没有办法让这个场景有效?

有一个Python脚本.它通过使用IronPython运行此脚本而内置到DLL中:

import clr
clr.CompileModules("CompiledScript.dll", "script.py")
Run Code Online (Sandbox Code Playgroud)

目标是从C#代码调用此DLL的方法..NET Reflector显示DLL中有一个类 - DLRCashedCode我们感兴趣的方法是此类的私有静态方法.

例如,脚本中有一个函数:

def scriptMethod(self, text):
...
Run Code Online (Sandbox Code Playgroud)

它在DLL中的表示是:

private static object scriptMethod(Closure closure1, PythonFunction $function, object self, object text)
{
...
}
Run Code Online (Sandbox Code Playgroud)

Closure并且PythonFunction是IronPython类(来自Microsoft.Scripting.dll和IronPython.dll).

到现在为止还挺好.是否有可能通过C#代码调用此方法?使用反射的想法

Type t = typeof(DLRCachedCode);

string methodName = "scriptMethod";
MethodInfo method = t.GetMethod(methodName, BindingFlags.NonPublic | BindingFlags.Static);

object[] parameters = new object[] { "param1", "param2" };  // the "params problem"
method.Invoke(null, parameters);
Run Code Online (Sandbox Code Playgroud)

因为设置方法的参数似乎更难.如果它们(如何)正确初始化,我们是否可以期望该方法能够顺利运行?

有没有更好的方法从C#调用此方法?出于各种不同的原因,我们希望将脚本构建为.NET程序集,而不是调用脚本本身.

c# python ironpython

10
推荐指数
2
解决办法
7538
查看次数

如何在应用程序中嵌入图形交互式IronPython shell?

我在我的宠物开源项目RevitPythonShell(建筑建模软件Autodesk Revit Architecture 2010的插件)中尝试了明显的路径:code.interact()使用IronPython引擎设置为STDIN和使用.NET流STDOUT.然后我将这些重定向到TextBox控件.它有点工作,但真的只是一个丑陋的黑客.

主要问题是让所有shell工作正常工作:历史记录的上箭头和下箭头,编辑,复制和粘贴,EOF,语法高亮,工具提示等.要做到这一点需要做很多工作,而且它并不是我想要解决的问题(我正在尝试在Revit中托管交互式shell,而不是制作完美的shell GUI).

如果这不是一个.NET项目,我可能会考虑重用PyCrust/PyWrap,但我不确定是否可以从WinForms项目中完成..NET有什么类似的东西吗?

有没有人实现过IConsole界面,可以展示我需要做什么的例子?看起来这将是正确的路线(而不是使用code模块),但对于我的生活,我无法弄明白.IronPython源代码没有任何评论.

更新:在尝试了一些东西后,我最终选择了精湛的IronLab代码.它包括一个带语法高亮的示例shell和all.代码很好,易于集成.检查有关如何嵌入它的提示的RevitPythonShell代码.

python shell ironpython embedding read-eval-print-loop

10
推荐指数
1
解决办法
4024
查看次数

BeautifulSoup和ASP.NET/C#

有没有人将BeautifulSoup与ASP.NET/C#集成(可能使用IronPython或其他方式)?是否有一个BeautifulSoup替代品或一个与ASP.NET/C#很好地工作的端口

计划使用该库的目的是从任何随机URL中提取可读文本.

谢谢

c# asp.net ironpython screen-scraping beautifulsoup

10
推荐指数
1
解决办法
1万
查看次数

为什么公共语言运行时不能支持Java

今天,公共语言运行时支持许多语言,包括Iron Python和Iron Ruby.我们同样可以在Java Run Time环境中使用J Ruby和J Python.如果是这样,为什么.net框架工作的公共语言运行时间不能支持Java?你只是好奇地知道,虽然你可能会认为这是一个愚蠢的问题.

.net c# java ironpython

10
推荐指数
2
解决办法
4375
查看次数

添加新的IronPython WPF窗口以抱怨"WPF项目中不支持窗口"

在VS2013(使用Python Tools for VS 2.0.11016)的IronPython 2.7项目中添加一个全新的,未触及的WPF窗口后,它立即告诉我设计窗口中的"无效标记",错误列表显示:

Windows Presentation Foundation(WPF)项目不支持窗口.

Windows Presentation Foundation(WPF)项目不支持网格.

XAML窗口中有这个看似无害的代码:

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" Height="300" Width="300">
    <Grid>

    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

VS的Python工具不是真的支持表单创建吗?我忘记配置了什么吗?

wpf xaml ironpython visual-studio-2013

10
推荐指数
1
解决办法
2771
查看次数

如何为Ironpython27安装numpy和scipy?旧方法不起作用

我认为这是以前最流行的方式:

https://pytools.codeplex.com/wikipage?title=NumPy%20and%20SciPy%20for%20.Net

但是这个链接不再存在:

https://store.enthought.com/repo/.iron/


我最近找到了该指令的克隆,并在github上找到了ironpkg-1.0.0.py的克隆.但http://www.enthought.com/repo/.iron/eggs/index-depend.txt已不再存在于互联网上(我用Google搜索,但未找到它)

SciPy for .NET入门

1.)IronPython下载并安装IronPython 2.7,这将需要.NET v4.0.

2.)修改PATH

在路径上添加安装位置,通常是:C:\ Program File\IronPython 2.7

但在64位Windows系统上,它是:C:\ Program File(x86)\ IronPython 2.7

作为检查,打开Windows命令提示符并转到目录(不是上面的目录)并键入:

在.NET 4.0.30319.225上的ipy -V PythonContext 2.7.0.40

3.)ironpkg

Bootstrap ironpkg,它是二进制(基于蛋)Python包的包安装管理器.下载ironpkg-1.0.0.py并键入:

ipy ironpkg-1.0.0.py --install
现在应该可以使用ironpkg命令:

ironpkg -h(此处显示一些有用的帮助文本)

4.)scipy

现在安装scipy很简单:

ironpkg scipy numpy-2.0.0b2-1.egg

题

我想我已尽我所能做到了.任何机构成功为Ironpython27安装numpy和scipy?

.net python ironpython numpy scipy

10
推荐指数
2
解决办法
2万
查看次数