在C#中从IronPython调用Python“import”模块的引用

19 投票
1 回答
1794 浏览
提问于 2025-04-16 20:42

我对IronPython完全是个新手。我需要从一个ASP.NET网站调用一个py脚本,下面是我写的代码:

var ipy = IronPython.Hosting.Python.CreateRuntime();
dynamic test = ipy.UseFile(Server.MapPath(@"~\python\test.py"));
test.DoWork();

我使用的IronPython版本是2.7。

我需要调用的第三方Python文件有以下导入指令:

import sys
from array import *
from subprocess import *

我遇到了一个错误:“没有名为subprocess的模块”。我已经把subprocess.py文件从IronPython安装目录的Lib文件夹复制过来了,但我想我需要在C#代码中链接它,对吗?

谢谢。

编辑:

我找到了解决办法:

ScriptEngine scriptEngine = Python.CreateEngine();

var sp = scriptEngine.GetSearchPaths();
sp.Add(Server.MapPath(@"~\python\lib"));
scriptEngine.SetSearchPaths(sp);

var scope = scriptEngine.Runtime.ExecuteFile(Server.MapPath(@"~\python\test.py"));

如果有人有任何意见或改进建议,请随时分享,因为我在Python/IronPython的这些内容上还是个新手。

1 个回答

2

另一种做法是:

dynamic sys = scriptEngine.ImportModule("sys");            
sys.path.append(somePath);

撰写回答