我的C#代码调用导入两个包的IronPython脚本。
我的环境是:
我也补充说 以下对我的项目的引用:
IronPython
IronPython.Modules
Microsoft Scripting
Microsoft.Dynamic
我的C#代码是:
using System;
using IronPython.Hosting;
namespace RunExternalScript {
internal class Program {
private static void Main() {
var py = Python.CreateEngine();
try {
py.ExecuteFile("script.py");
} catch (Exception ex) {
Console.WriteLine("Oops! We couldn't execute the script because of an exception: " + ex.Message);
}
Console.WriteLine("Press enter to exit...");
Console.ReadLine();
}
}
}
Python script.py是:
import pickel
import numpy
print('Imports work.')
如果我注释掉这两个导入,程序就可以了。 我的真实剧本需要“pickel”和“numpy”包。
如何让我的Python脚本导入这两个包?
查尔斯
答案 0 :(得分:1)
您可以使用PythonEngine.SetSearchPaths(...)
函数告诉IronPython在哪里搜索包。
例如
var py = Python.CreateEngine();
private List<string> m_searchPaths = new List<string>();
m_searchPaths.Add(AppDomain.CurrentDomain.BaseDirectory + @"\Lib");
m_searchPaths.Add(@"C:\Python27\lib");
// Add any other Path you want to add in search path
py.SetSearchPaths(m_searchPaths);
try
{
py.ExecuteFile("script.py");
}
catch (Exception ex)
{
Console.WriteLine("Oops! We couldn't execute the script because of an exception: " + ex.Message);
}