标签: ironpython

嵌入 IronPython - 无法添加对系统的引用

我在我的 C# 应用程序中嵌入了 IronPython。出于某种原因,我在加载程序集时遇到了问题。具体来说,我想要 System.dll,这样我就可以访问 DateTime 等 .NET 类。

如果我尝试这一行:

_runtime.LoadAssembly(_runtime.Host.PlatformAdaptationLayer.LoadAssembly("System"));
Run Code Online (Sandbox Code Playgroud)

我得到:

could not load file or assembly 'System'
Run Code Online (Sandbox Code Playgroud)

如果我明确输入 C:/WINDOWS/Microsoft.NET/.../System.dll 的路径,我会得到:

The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)
Run Code Online (Sandbox Code Playgroud)

然后我尝试在 Python 脚本中使用 clr 进行导入:

import clr
clr.AddReference('System')
from System import DateTime
Run Code Online (Sandbox Code Playgroud)

现在我得到:

Cannot import name DateTime
Run Code Online (Sandbox Code Playgroud)

我哪里错了?为什么DateTime 不在System 中,为什么LoadAssembly 找不到System.dll?我是否需要明确地为 IronPython 设置一些搜索路径?是否找到无效的“系统”?

当我在 IronPython 解释器中测试时,这一切正常。

.net ironpython

3
推荐指数
1
解决办法
2517
查看次数

Python 使用算法在交互式控制台中的 >>> 和 ... 提示之间做出决定?

我正在实现一个自定义 (Iron)Python 控制台。

一般情况下,我需要显示>>>提示,但是当语句不完整时,我需要将提示更改为...并在执行之前收集更多行。

我如何知道用户输入的行是否完整或者我是否需要阅读更多行?

一个简单的方法似乎是检查是否:存在。但我不确定我是否错过了其他:不存在的情况。

我查看了 IronPython 源代码来弄清楚它是如何做到这一点的,但是涉及很多步骤,我的简单复制未能完全工作。

python console ironpython interactive read-eval-print-loop

3
推荐指数
1
解决办法
350
查看次数

从IronPython初始化C#List <T>?

我在C#中有一个相对较深的对象树需要从IronPython初始化.

我是python的新手,我正在努力进行数组的初始化.

举个例子 - 假设我在C#中有这些类

public class Class1
{
    public string Foo {get;set;}
}

public class Class2
{
    List<Class1> ClassOnes {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我可以在Class2中初始化数组,如下所示:

var class2 = new Class2(
    ClassOnes = new List<Class1>()
    {
        new Class1(Foo="bar")
    });
Run Code Online (Sandbox Code Playgroud)

在IronPython中 - 我试过这个:

bar = Class2
bar.ClassOnes = Class1[Class1(Foo="bar")]
Run Code Online (Sandbox Code Playgroud)

但我总是得到这样的信息:

期望的数组[类型],得到Class1

有任何想法吗?

ironpython

3
推荐指数
2
解决办法
8683
查看次数

有什么方法可以使用 Visual Studio 和 PTVS 调试嵌入在 C# 中的 Python 代码?

我已经创建了在 C# 中嵌入 IronPython 代码的代码

    public ScriptEngine GetEngine() {
        if( _engine != null )
            return _engine;

        _engine = Python.CreateEngine();
        var paths = _engine.GetSearchPaths();
        paths.Add( _pythonPath );
        _engine.SetSearchPaths( paths );

        var runtime = _engine.Runtime;
        runtime.LoadAssembly( typeof( CharacterCore ).Assembly );
        return _engine;
    }

    public IAbility Movement() {
        var engine = GetEngine();
        var script = engine.CreateScriptSourceFromFile( Path.Combine( _pythonPath, "movement.py" ) );
        var code = script.Compile();
        var scope = engine.CreateScope();
        code.Execute( scope );

        return scope.GetVariable( "result" );
    }
Run Code Online (Sandbox Code Playgroud)

在同一解决方案中的单独 Python 项目中使用适当的 Python 代码。代码本身有效,但如果我在 Python …

c# debugging ironpython visual-studio ptvs

3
推荐指数
1
解决办法
2847
查看次数

IronPython - 在C#4.0应用程序中从字符串加载脚本

我有以下代码(只是一个测试):

var engine = Python.CreateEngine();
var runtime = engine.Runtime;

    try
    {                
        dynamic test = runtime.UseFile(@"d:\test.py");

        test.SetVariable("y", 4);
        test.SetVariable("client", UISession.ControllerClient);
        test.Simple();
    }
    catch (Exception ex)
    {
        var eo = engine.GetService<ExceptionOperations>();
        Console.WriteLine(eo.FormatException(ex));
    }
Run Code Online (Sandbox Code Playgroud)

但我想从字符串加载脚本.

c# ironpython embedding

2
推荐指数
1
解决办法
4551
查看次数

Ironpython:IEnumerator

我有一个方法返回某种类型的IEnumerable.现在我想知道如何用Ironpython迭代IEnumerable?

谢谢

.net c# ironpython

2
推荐指数
1
解决办法
1103
查看次数

Iron Python vs Razor

我对使用新的Razor语法有一点经验,但没有使用Iron Python的经验.我想知道两者是否满足相同的需求?微软是否会优先于其他(或将会)?欣赏你的想法,因为我正在学习学习Iron Python的想法,但如果Razor能够满足同样的需求,我可能不会.

python ironpython razor

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

如何在IronPython中使用C#对象上的特定接口

我有一个C#类,它实现了2个IEnumerable接口.如何从IronPython访问任一界面?

我的课:

public class MyClass : IEnumerable<TypeA>, IEnumerable<TypeB>
{
    IEnumerator<TypeA> IEnumerable<TypeA>.GetEnumerator()
    {
        return _lstTypeA.GetEnumerator();
    }

    IEnumerator<TypeB> IEnumerable<TypeB>.GetEnumerator()
    {
        return _lstTypeB.GetEnumerator();
    }
}
Run Code Online (Sandbox Code Playgroud)

我在Python中尝试了以下内容,但它运行时没有错误,它不会从IEnumerable接口返回任何元素:

x = MyClass()
xA = clr.Convert(x, IEnumerable[TypeA])
for y in xA: print y
Run Code Online (Sandbox Code Playgroud)

c# ironpython

2
推荐指数
1
解决办法
1739
查看次数

IronPython发布非常缓慢

我在Windows 7上启动IronPython 2.7.3并且耗时超过15秒.为什么这么慢?以及如何解决它?这台电脑是三星NP300E5A(赛扬B800,2gb)笔记本电脑.

python ironpython

2
推荐指数
1
解决办法
324
查看次数

Spotfire IronPython脚本:删除数据表

我是铁蟒蛇的新手。如果有人可以告诉我如何使用iron-python完全删除数据表,我将有义务?

ironpython spotfire

2
推荐指数
1
解决办法
2053
查看次数