c# - 设置 ironpython:找不到模块
问题描述
我第一次使用 Ironpython 将 Python 脚本导入 C#。我收到错误“没有名为 numpy 的模块”,但我不知道为什么。我读到我必须将我的模块路径添加到我的 python 脚本中。这是我的python脚本:
import numpy as np
import sys
sys.path.append(r"C:\Users\abc\CSharp\PythonScriptExecution1\packages\IronPython.2.7.9\lib")
sys.path.append(r"C:\Users\abc\PycharmProjects\untitled3\venv\Lib")
sum = np.sum([0.5, 1.5])
print(sum)
第二个路径是在 Pycharm 中也用作 python.exe 的项目解释器的路径。
我的 C# 代码是这样的:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PythonScriptExecution2
{
class Program
{
static void Main(string[] args)
{
Microsoft.Scripting.Hosting.ScriptEngine pythonEngine =
IronPython.Hosting.Python.CreateEngine();
// We execute this script from Visual Studio
// so the program will be executed from bin\Debug or bin\Release
Microsoft.Scripting.Hosting.ScriptSource pythonScript =
pythonEngine.CreateScriptSourceFromFile("C:/Users/abc/PycharmProjects/untitled3/test.py");
pythonScript.Execute();
}
}
}
在 Pycharm 中运行 Python 脚本可以正常工作,但是将其导入 C# 会导致上述错误。有人可以帮我设置正确的路径吗?
编辑:如果它不起作用,有人知道用 C# 运行 python 脚本的任何其他方法吗?
解决方案
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PythonScriptExecution2
{
class Program
{
static void Main(string[] args)
{
Microsoft.Scripting.Hosting.ScriptEngine eEngine =
IronPython.Hosting.Python.CreateEngine();
// We execute this script from Visual Studio
// so the program will be executed from bin\Debug or bin\Release
Microsoft.Scripting.Hosting.ScriptSource pythonScript =
ICollection<string> searchPaths = engine.GetSearchPaths();
searchPaths.Add(@"C:\Users\abc\CSharp\PythonScriptExecution1\packages\IronPython.2.7.9\lib");
searchPaths.Add(@"C:\Users\abc\PycharmProjects\untitled3\venv\Lib");
engine.SetSearchPaths(searchPaths);
engine.CreateScriptSourceFromFile("C:/Users/abc/PycharmProjects/untitled3/test.py");
pythonScript.Execute();
}
}
}
推荐阅读
- sql - 公式拾取几乎所有值
- c# - 如何在 CouchDB 中查找错误请求的原因
- c++11 - 通过 C++ Eigen 库使用英特尔 MKL Sparse BLAS 扩展
- python - 如何在python中扫描字符串文字时修复eol
- python - 将具有不同索引的多个数据帧组合成单个图时,Pandas 或 matplotlib 错误地移动 x 值
- javascript - 无法在模式内的列表元素上使用单击功能
- javascript - 无法在第一次按键时自动完成
- typescript - 构造半动态对象时的类型安全?
- c# - 过滤类型 A 的列表,A 包含类型 B 的列表,并在 C# 中对 B 的元素的条件
- applescript - 我正在尝试使用 launchd 在启动时运行 AppleScript 但没有结果