C# 如何调用Python文件
我已经写好啦一个Python文件importsubprocessimportreimportsys......我用c#引用IronPython.dllvarengine=...
我已经写好啦一个Python文件
import subprocess
import re
import sys
......
我用c#引用IronPython.dll
var engine = IronPython.Hosting.Python.CreateEngine();
var scope = engine.CreateScope();
//engine.SetSearchPaths(new List<string>() { @"D:\Python27\Lib" });
var source = engine.CreateScriptSourceFromFile(@"my.py");
source.Execute();
执行到这里就报错:
在 Microsoft.Scripting.Runtime.LightExceptions.ThrowException(LightException lightEx)
在 Microsoft.Scripting.Runtime.LightExceptions.CheckAndThrow(Object value)
在 Microsoft.Scripting.Interpreter.FuncCallInstruction`2.Run(InterpretedFrame frame)
在 Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
在 Microsoft.Scripting.Interpreter.LightLambda.Run1[T0,TRet](T0 arg0)
在 IronPython.Compiler.RuntimeScriptCode.InvokeTarget(Scope scope)
在 IronPython.Compiler.RuntimeScriptCode.Run(Scope scope)
在 IronPython.Runtime.PythonContext.InitializeModule(String fileName, ModuleContext moduleContext, ScriptCode scriptCode, ModuleOptions options)
在 IronPython.Runtime.PythonContext.CompileModule(String fileName, String moduleName, SourceUnit sourceCode, ModuleOptions options, ScriptCode& scriptCode)
在 IronPython.Runtime.PythonContext.CompileModule(String fileName, String moduleName, SourceUnit sourceCode, ModuleOptions options)
在 IronPython.Runtime.Importer.LoadFromSourceUnit(C 展开
import subprocess
import re
import sys
......
我用c#引用IronPython.dll
var engine = IronPython.Hosting.Python.CreateEngine();
var scope = engine.CreateScope();
//engine.SetSearchPaths(new List<string>() { @"D:\Python27\Lib" });
var source = engine.CreateScriptSourceFromFile(@"my.py");
source.Execute();
执行到这里就报错:
在 Microsoft.Scripting.Runtime.LightExceptions.ThrowException(LightException lightEx)
在 Microsoft.Scripting.Runtime.LightExceptions.CheckAndThrow(Object value)
在 Microsoft.Scripting.Interpreter.FuncCallInstruction`2.Run(InterpretedFrame frame)
在 Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
在 Microsoft.Scripting.Interpreter.LightLambda.Run1[T0,TRet](T0 arg0)
在 IronPython.Compiler.RuntimeScriptCode.InvokeTarget(Scope scope)
在 IronPython.Compiler.RuntimeScriptCode.Run(Scope scope)
在 IronPython.Runtime.PythonContext.InitializeModule(String fileName, ModuleContext moduleContext, ScriptCode scriptCode, ModuleOptions options)
在 IronPython.Runtime.PythonContext.CompileModule(String fileName, String moduleName, SourceUnit sourceCode, ModuleOptions options, ScriptCode& scriptCode)
在 IronPython.Runtime.PythonContext.CompileModule(String fileName, String moduleName, SourceUnit sourceCode, ModuleOptions options)
在 IronPython.Runtime.Importer.LoadFromSourceUnit(C 展开
3个回答
展开全部
1. 安装IronPython
到http://ironpython.codeplex.com/下载IronPython。
安装下载下来的安装包(要先装VS啊)。
2. 创建项目
创建一个C#的控制台应用程序。
添加引用: 浏览到IronPython的安装目录中,添加对IronPython.dll,Microsoft.Scripting.dll 两个dll的引用。
3. 添加Python文件到当前的项目中
创建一个文本文件命名为:hello.py, 编辑如下
def welcome(name):
return "hello" + name
把该文件添加的当前的项目中。
4. 在C#中调用Python方法
首先添加两个引用:它们定义了Python和ScriptRuntime两个类型。
第一句代码创建了一个Python的运行环境,第二句则使用.net4.0的语法创建了一个动态的对象, OK,下面就可以用这个dynamic类型的对象去调用刚才在定义的welcome方法了。
注意:在运行前一定要把hello.py文件设为:Copy always.
否则运行时会报找不到hello.py文件,enjoy it!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询