IronPython无法运行导入numpy的脚本

时间:2015-05-18 09:43:14

标签: .net python-2.7 numpy ironpython python.net

免责声明 - 我不熟悉Python。我是一名C#开发人员,他使用IronPython编写了一个执行Python脚本(由他人创作)的应用程序。到目前为止,这些脚本只需要使用import math,但我们的一位用户要求该应用程序支持Numpy。

我已经在我的电脑上安装了Numpy(使用' numpy-1.9.2-win32-superpack-python2.7.exe'文件),它在\ Lib \ site-下创建了一个numpy文件夹包。我编写了一个两行Python脚本来测试Numpy是否可访问: -

import numpy as np
x = np.array([1,2])

我在C#中运行脚本: -

var engine = Python.CreateEngine();
engine.SetSearchPaths(new Collection<string>(new[]
{
    @"C:\Python27", 
    @"C:\Python27\DLLs", 
    @"C:\Python27\Lib", 
    @"C:\Python27\Lib\site-packages", 
    @"C:\Python27\Lib\site-packages\numpy",
    @"C:\Python27\Lib\site-packages\numpy\core"
}));
var scope = engine.CreateScope();
var scriptSource = engine.CreateScriptSourceFromString(
    _myPythonScript, 
    SourceCodeKind.Statements);
scriptSource.Execute(scope);

尽管设置了所有这些搜索路径,但最后一行会抛出ImportException: -

  

无法从numpy.core导入多阵列

请注意,this SO文章类似,但没有帮助 - 第一个答案提到了“mtrand.dll”#39;文件,我似乎没有。

我错过了什么?

2 个答案:

答案 0 :(得分:2)

“multiarray”是一个.pyd文件,除非有人能够纠正我,否则IronPython(How can I import a .PYD module in IronPython?)似乎不支持这些文件。

答案 1 :(得分:1)

你遇到了IronPython的主要限制 - 它不支持CPython的C-API。因此,您需要使用pythonnet:

https://github.com/pythonnet/pythonnet

你可以尝试numpy的纯python实现:

https://github.com/wadetb/tinynumpy