我正在将一个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语法将如何呈现?
我希望将特定的.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)
但是这会将所有类型公开给运行时.是否可以选择性加载?
我想使用对象数据库来保存在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) 我正在使用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的文件.
请告诉我在构建我的程序的编译版本时会出现什么问题.
非常感谢你.
我想知道使用CPython的cPickle序列化的对象是否可以使用IronPython的cPickle读取; 有问题的对象不需要Cpython和IronPython都包含的内置函数之外的任何模块.谢谢!
我开始使用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) 我想在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主页重现这些示例.
提前致谢!
我正在使用Iron Python编写一些ETL脚本,并发现我可以从模块中使用日期解析器中受益dateutil.我知道我可以通过将Iron Python指向适当的位置来使用我的标准python库.但是,我的脚本可能会在使用Iron Python但没有安装普通Python的机器上运行.
如何dateutil在我的Iron Python库中安装(或其他标准Python模块)?
我试过简单地将.egg标准的site-packages目录复制到Iron Python的site-packages目录,但这会导致ImportError我导入的时间dateutil.
我让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#中执行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,我都安装了它们而未解决问题。我该怎么做才能解决问题?
ironpython ×10
.net ×4
c# ×4
python ×2
sharpdevelop ×2
db4o ×1
excel-dna ×1
importerror ×1
lambda ×1
logging ×1
mono ×1
pickle ×1
python-2.7 ×1
r ×1
scripting ×1
sqlite ×1