我有一个执行python脚本的函数。 python脚本调用jira库连接到它的服务器。然后它将返回数据并为其创建一个excel文件。当我手动执行时,python脚本运行正常,但问题是当我在我的asp函数上调用它时它返回错误
没有模块名称jira
我猜IronPython没有jira库,因为我刚刚将它安装在Python Library上。
我甚至尝试通过Process执行脚本并且它被触发但不幸的是它没有返回任何内容。
这是我通过IronPython执行python的代码
ScriptRuntimeSetup setup = Python.CreateRuntimeSetup(null);
ScriptRuntime runtime = new ScriptRuntime(setup);
ScriptEngine engine = Python.GetEngine(runtime);
var paths = engine.GetSearchPaths();
paths.Add(@"C:\Users\jdecena\AppData\Local\Programs\Python\Python35\Lib");
engine.SetSearchPaths(paths);
ScriptSource source = engine.CreateScriptSourceFromFile("C:/Dave/jirautomatic/try.py");
ScriptScope scope = engine.CreateScope();
source.Execute(scope);
dynamic Generate = scope.GetVariable("connect_to_jira_and_get_projects");
dynamic gen = Generate();
gen();
这是我的代码执行python thru process
Process proc = new Process();
proc.StartInfo.FileName = @"C:\Dave\jirautomatic\try.py";
proc.Start();
proc.WaitForExit();
proc.Dispose();
有没有办法可以将Python上的库包含在IronPython中?
TIA
答案 0 :(得分:1)
当您通过c#或ASP.NET执行python时,这是常见问题。只有原因是C#期望所有以汇编形式出现的二进制文件,其中python期望以模块的形式。
对于这个问题,有两种方法可用
简单的方法是将模块设置为系统变量。一旦进程启动,python将自动搜索系统路径。您可以直接在 PATH 变量中设置路径,也可以创建名为 PYTHONPATH 的新变量
这种方法仅针对应用程序的生命周期进行设置。例如,如果任何应用程序想要使用已知的'在项目中可用的模块,然后它可以使用python中的 sys 模块设置路径运行时。但请记住,一旦程序执行,临时变量就会丢失。所以这种代码可以在c#或python中使用。在c#中使用System.IO命名空间或在Python中使用sys模块