C# 在C语言中执行python脚本#

C# 在C语言中执行python脚本#,c#,python-2.7,ironpython,C#,Python 2.7,Ironpython,我正在尝试用C#执行python代码。通常情况下,应该使用IronPython并在安装PTV(我使用的是VS2010)之后完成 问题在于,IronPython似乎无法识别一些库,如numpy、pylab或matplotlib。我看了一眼,发现一些人在谈论Enthow Canopy或Anaconda,我都安装了它们,但没有解决问题。 我应该怎么做才能解决问题?如果执行代码,IronPython将只在当前工作目录中查找脚本。您需要添加更多的搜索路径。这是我的应用程序中使用ironpython的一些旧

我正在尝试用C#执行python代码。通常情况下,应该使用IronPython并在安装PTV(我使用的是VS2010)之后完成

问题在于,IronPython似乎无法识别一些库,如numpy、pylab或matplotlib。我看了一眼,发现一些人在谈论Enthow Canopy或Anaconda,我都安装了它们,但没有解决问题。
我应该怎么做才能解决问题?

如果执行代码,IronPython将只在当前工作目录中查找脚本。您需要添加更多的搜索路径。这是我的应用程序中使用ironpython的一些旧集成代码的一部分:

var runtimeSetup = Python.CreateRuntimeSetup(null);
runtimeSetup.DebugMode = false;
runtimeSetup.Options["Frames"] = true;
runtimeSetup.Options["FullFrames"] = true;
var runtime = new ScriptRuntime(runtimeSetup);

var scriptEngine = runtime.GetEngineByTypeName(typeof(PythonContext).AssemblyQualifiedName);

// Set default search paths
ICollection<string> searchPaths = scriptEngine.GetSearchPaths();
searchPaths.Add("\\Scripts\\Python");
scriptEngine.SetSearchPaths(searchPaths);
var runtimeSetup=Python.CreateRuntimeSetup(null);
runtimeSetup.DebugMode=false;
runtimeSetup.Options[“Frames”]=true;
runtimeSetup.Options[“FullFrames”]=true;
var runtime=newscriptruntime(runtimeSetup);
var scriptEngine=runtime.GetEngineByTypeName(typeof(PythonContext).AssemblyQualifiedName);
//设置默认搜索路径
ICollection searchpath=scriptEngine.getsearchpath();
searchpath.Add(“\\Scripts\\Python”);
scriptEngine.SetSearchPath(搜索路径);
诀窍是在此代码行中添加所有路径:
scriptEngine.SetSearchPaths(searchPaths)。如果将包含
plot.py
的目录添加到此处,则所有操作都将正常工作


希望这有帮助。

为了执行一个Python脚本,该脚本导入了一些库,如numpy和pylab,可以这样做:

        string arg = string.Format(@"C:\Users\ayed\Desktop\IronPythonExamples\RunExternalScript\plot.py"); // Path to the Python code
    Process p = new Process();
    p.StartInfo = new ProcessStartInfo(@"D:\WinPython\WinPython-64bit-2.7.5.3\python-2.7.5.amd64\python.exe", arg);
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.CreateNoWindow = true; // Hide the command line window
    p.StartInfo.RedirectStandardOutput = false;
    p.StartInfo.RedirectStandardError = false;
    Process processChild = Process.Start(p.StartInfo); 

您可能需要设置一些搜索路径。我尝试了此操作,但奇怪的是没有执行任何操作。您可以添加一些有关项目/目录结构的详细信息吗?没有你的帮助,很难找到一些问题。
        string arg = string.Format(@"C:\Users\ayed\Desktop\IronPythonExamples\RunExternalScript\plot.py"); // Path to the Python code
    Process p = new Process();
    p.StartInfo = new ProcessStartInfo(@"D:\WinPython\WinPython-64bit-2.7.5.3\python-2.7.5.amd64\python.exe", arg);
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.CreateNoWindow = true; // Hide the command line window
    p.StartInfo.RedirectStandardOutput = false;
    p.StartInfo.RedirectStandardError = false;
    Process processChild = Process.Start(p.StartInfo);