.net - IronPython 无法运行导入 numpy 的脚本

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

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

我已经在我的 PC 上安装了 Numpy(使用“numpy-1.9.2-win32-superpack-python2.7.exe”文件),它在\Lib\site-packages 下创建了一个 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:-

cannot import multiarray from numpy.core

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

我错过了什么?

最佳答案

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

https://github.com/pythonnet/pythonnet

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

https://github.com/wadetb/tinynumpy

关于.net - IronPython 无法运行导入 numpy 的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30299837/

相关文章:

python - 在 pythonnet 中使用 OWdotNET.dll(.NET 的 python)

javascript - 用户控件内的 RegisterStartupScript

python - 构建 OpenCV cmake 错误 : could NOT find PythonInterp

c# - 如何避免派生类中的向下转型

c# - 获取 NetworkStream 中可用数据的长度

python - 在 Python 中从数组中删除一些元素

python:双端队列与列表性能比较

python - Tensorflow 权重矩阵秩误差

python - NumPy 数组操作数的负指数

Python:调整现有数组的大小并用零填充