免责声明 - 我不熟悉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;文件,我似乎没有。
我错过了什么?
答案 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实现: