在IronPython中使用R.NET程序集

Wes*_*ley 5 .net ironpython r

我想在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主页重现这些示例.

提前致谢!

Jef*_*rdy 6

我猜你用的是Internet Explorer或Chrome,它们都标记了下载的文件(带有Zone.Identifier)..NET将拒绝加载被所述标记污染的程序集.

要删除它,只需取消阻止R.NET.dll文件.现在你应该好好去.我会看到在尝试加载这样的程序集时是否可以输入更好的错误消息.

  • 天哪,它有效.为了将来参考,"R.NET.dll"的属性中没有"取消阻止"按钮,如@Jeff链接到的博客文章中所示.我在该帖子中处理了一个(破碎的)链接,关于Microsoft Sysinternals实用程序的[此博客文章](http://www.elijahmanor.com/2009/09/recursively-unblock-assemblies-with.html)叫[`streams`](http://technet.microsoft.com/en-us/sysinternals/bb897440.aspx).命令`streams -d R.NET.dll`删除了块,现在`clr.AddReference("R.NET.dll"`)正常工作.好哇! (2认同)