如何在ASP.net中的IronPython库中导入第三方Python库

时间:2016-04-27 05:39:57

标签: c# python asp.net ironpython

我有一个执行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

1 个答案:

答案 0 :(得分:1)

当您通过c#或ASP.NET执行python时,这是常见问题。只有原因是C#期望所有以汇编形式出现的二进制文件,其中python期望以模块的形式。

对于这个问题,有两种方法可用

在系统变量中设置路径< / h3>

简单的方法是将模块设置为系统变量。一旦进程启动,python将自动搜索系统路径。您可以直接在 PATH 变量中设置路径,也可以创建名为 PYTHONPATH 的新变量

在运行时设置路径

这种方法仅针对应用程序的生命周期进行设置。例如,如果任何应用程序想要使用已知的&#39;在项目中可用的模块,然后它可以使用python中的 sys 模块设置路径运行时。但请记住,一旦程序执行,临时变量就会丢失。所以这种代码可以在c#或python中使用。在c#中使用System.IO命名空间或在Python中使用sys模块