标签: ironpython

如何从IronPython脚本将lambda表达式传递给C#构造函数?

我正在将一个IronPython scritping引擎集成到我的C#raytracer中,到目前为止,尽管我对Python完全不熟悉,但它仍然是轻而易举的.但是,有一件特别的事情,我需要帮助.我有一个C#类,它定义了一个这样的构造函数:

public CameraAnimation(Action<Camera, float> animation)
Run Code Online (Sandbox Code Playgroud)

在C#中,我会像这样实例化:

var camAnimation = new CameraAnimation((camera, time) => camera.Position += new Vector(1, 0, 0));
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何在IronPython中对Action对象进行类似的赋值,那么Python语法将如何呈现?

c# scripting lambda ironpython

5
推荐指数
1
解决办法
3403
查看次数

IronPython将.Net类型暴露给运行时引擎

我希望将特定的.Net类型公开给IronPython运行时.我可以做这个:

ScriptEngine engine = Python.CreateEngine();
ScriptScope scope = engine.CreateScope();
engine.Runtime.LoadAssembly(typeof(Program).Assembly); // current assembly with types
Run Code Online (Sandbox Code Playgroud)

但是这会将所有类型公开给运行时.是否可以选择性加载?

.net ironpython dynamic-language-runtime

5
推荐指数
1
解决办法
855
查看次数

如何将在IronPython中创建的对象存储到对象数据库

我想使用对象数据库来保存在IronPython中创建的一些类.该数据库是db4o for .NET 2.0(今天下载).代码如下所示:

import clr
clr.AddReferenceToFileAndPath(r"C:\dev\Db4objects\db4o-7.12-net20\bin\net-2.0\Db4objects.Db4o.dll")
from Db4objects.Db4o import *
db = Db4oFactory.OpenFile(r'G:\IronPython\test\db4o\database.db')

class Person(object):  
  def __init__(self, name, age):
    self.Name = name
    self.Age = age

  def __str__(self):
    return 'Person: ' + self.Name + ' ' + str(self.Age)

p1 = Person('testp', 34)
db.Store(p1)
Run Code Online (Sandbox Code Playgroud)

我得到例外 db.Store(p1)

Unexpected char '$'
ThrowUncheckedException at offset 4 in file:line:column <filename unknown>:0:0
FatalShutdown at offset 136 in file:line:column <filename unknown>:0:0
AsTopLevelCall at offset 112 in file:line:column <filename unknown>:0:0
AsTopLevelStore at offset 34 in file:line:column <filename unknown>:0:0 …
Run Code Online (Sandbox Code Playgroud)

.net ironpython db4o object-oriented-database

5
推荐指数
1
解决办法
621
查看次数

使用sqlite3和IronPython 2.6 for .Net4

我正在使用SharpDevelop 3.2.0,IronPython 2.6.1 for .Net4.

要使用IronPython的这个模块访问sqlite3功能: IronPython.SQLite

我的程序是一个GUI应用程序并访问sqlite数据库.当从IronPython通过ipy.exe解释器启动程序时(包括数据库访问)工作得非常完美.

但是,如果我尝试启动我使用SharpDevelop编译为可执行文件的程序,我会得到异常:

IronPython.Runtime.Exceptions.ImportException:没有名为_sqlite3的模块

此异常的原因位于dbapi2.py中:

来自_sqlite3 import*

在IronPython控制台上,我可以导入_sqlite3并按预期使用它.

我已经向SharpDevelop提供了sqlite3模块的路径,但是在IronPython或sqlite3-module文件夹中没有任何名为_sqlite3的文件.

请告诉我在构建我的程序的编译版本时会出现什么问题.

非常感谢你.

sqlite ironpython sharpdevelop

5
推荐指数
1
解决办法
3195
查看次数

CPython和IronPython cPickle之间的兼容性

我想知道使用CPython的cPickle序列化的对象是否可以使用IronPython的cPickle读取; 有问题的对象不需要Cpython和IronPython都包含的内置函数之外的任何模块.谢谢!

python ironpython pickle

5
推荐指数
1
解决办法
817
查看次数

IronPython Excel-Dna加载项 - 关于Microsoft.Dynamic引用的例外

我开始使用IronPython开发Excel-DNA插件,并使用一些C#作为IronPython调用的包装器.在Excel-DNA开发人员的慷慨帮助下,我已经解决了启动和运行样本的一些初步问题,但现在我正在尝试调试SharpDevelop中的插件,我遇到了一些问题.由于我对大部分内容都是全新的,我不确定它是否是SharpDevelop,.NET,Excel-DNA或IronPython的问题.

我在一个解决方案中创建了两个项目,一个是C#类库.另一个是python类库.我按照我在博客上找到的教程设置项目进行调试.我能够逐步完成C#代码的前几行,所以这是进步,但是当我到达以下行时:

pyEngine.Runtime.LoadAssembly(myclass); 
Run Code Online (Sandbox Code Playgroud)

我得到一个例外:

"无法加载文件或程序集'Microsoft.Dynamic,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一.找到的程序集的清单定义与程序集引用不匹配.(HRESULT的异常:0x80131040 )"

但我很确定我已将Microsoft.Dynamic引用添加到我的项目中.它是版本1.1.0.20.这包含在IronPython发行版中,但也包含在我计算机上的其他位置.我已经尝试将引用设置为两者,但它们都具有相同的版本号并且看起来是相同的文件大小.两者都不起作用.我需要1.0.0.0版本还是我做错了什么?我真的不明白为什么pyEngine(Python.CreateEngine()返回的ScriptEngine)会尝试加载与发行版中包含的版本不同的版本.

代码如下.如果您需要任何其他信息,请与我们联系.

MyAddin.cs

/*
Added these references all as Local Copies - probably not necessary?

System.Windows.Forms
Microsoft.CSharp

ExcelDna.Integration (from Excel-DNA distribution folder)
IronPython (from IronPython folder)
IronPython.Modules (from IronPython folder)
Microsoft.Dynamic (from IronPython folder)
Microsoft.Scripting (from IronPython folder)
Microsoft.Scripting.Metadata (from IronPython folder)

mscorlib (I don't really know why I added this, but it was one of the references in my IronPython class library)

MyClass …
Run Code Online (Sandbox Code Playgroud)

.net c# ironpython sharpdevelop excel-dna

5
推荐指数
1
解决办法
1840
查看次数

在IronPython中使用R.NET程序集

我想在IronPython 2.7应用程序中使用R统计软件包进行一些数据处理.我找到了R.NET程序集,这应该可以实现.问题是IronPython拒绝加载R.NET程序集.

代码:

import clr  
clr.AddReference("R.NET")
Run Code Online (Sandbox Code Playgroud)

生产:

System.IO.IOException: could not add reference to assembly R.NET
Run Code Online (Sandbox Code Playgroud)

程序集位于一个名为的文件中R.NET.dll,该文件存储在我调用的同一文件夹中ipy.exe.我已检查该文件夹已打开sys.path.我尝试过像clr.AddReference("R.NET.dll")和的变化clr.AddReferenceToFile("R.NET.dll").没有成功.

问题可能在于.程序集名称中有一个dot()吗?我该如何解决这个问题?

FWIW我使用的是Windows 7,R 2.13.0,IronPython 2.7,.NET框架的v4.0和R.NET 1.4.我可以从Visual C#Express IDE(在.NET 4.0下)成功添加对R.NET的引用,并从R.NET主页重现这些示例.

提前致谢!

.net ironpython r

5
推荐指数
1
解决办法
1903
查看次数

如何在Iron Python中安装标准Python模块?

我正在使用Iron Python编写一些ETL脚本,并发现我可以从模块中使用日期解析器中受益dateutil.我知道我可以通过将Iron Python指向适当的位置来使用我的标准python库.但是,我的脚本可能会在使用Iron Python但没有安装普通Python的机器上运行.

如何dateutil在我的Iron Python库中安装(或其他标准Python模块)?

我试过简单地将.egg标准的site-packages目录复制到Iron Python的site-packages目录,但这会导致ImportError我导入的时间dateutil.

python ironpython

5
推荐指数
1
解决办法
3834
查看次数

IronPython ImportException:没有名为logging的模块

我让ironpython在mono上工作正常,但它不会导入logging模块.执行此代码:

ScriptEngine engine = Python.CreateEngine();
dynamic logging = engine.ImportModule("logging");
Run Code Online (Sandbox Code Playgroud)

产生以下错误:

IronPython.Runtime.Exceptions.ImportException: No module named logging
Run Code Online (Sandbox Code Playgroud)

我包含的IronPython程序集是最新的:IronPython.Modules.dll,Microsoft.Dynamic.dll,Microsoft.Scripting.dll,Microsoft.Scripting.Metadata.dll.

如何在Ironpython中使用日志记录模块?

c# mono logging ironpython importerror

5
推荐指数
1
解决办法
9210
查看次数

在C#中执行python脚本

我正在尝试在C#中执行python代码。通常,应该使用IronPython并在安装PTVS之后完成此操作(我使用的是VS 2010)。

        var pyEngine = Python.CreateEngine();  
        var pyScope = pyEngine.CreateScope();   

        try
        {
           pyEngine.ExecuteFile("plot.py", pyScope);

        }
        catch (Exception ex)
        {
            Console.WriteLine("There is a problem in your Python code: " + ex.Message);
        }
Run Code Online (Sandbox Code Playgroud)

问题在于,IronPython似乎无法识别某些库,例如numpy,pylab或matplotlib。我看了一下,发现有些人在谈论Enthought Canopy或Anaconda,我都安装了它们而未解决问题。我该怎么做才能解决问题?

c# ironpython python-2.7

5
推荐指数
1
解决办法
5352
查看次数