无法在ASP.NET Core Web API项目中运行Python
我正在使用Core 6和Pythonnet这个包。
我创建了一个名为example.py的Python文件。
def add(a, b):
return a + b
我创建了一个叫做PythonScriptRunner
的类:
public PythonScriptRunner()
{
Runtime.PythonDLL = @"C:\Python312\python312.dll"; // I installed the python it this path
PythonEngine.Initialize();
}
然后我把它添加到program.cs文件里。
builder.Services.AddScoped<PythonScriptRunner>();
接着我创建了一个控制器。
public IActionResult Test(int a, int b)
{
using (Py.GIL())
{
dynamic python = Py.Import("example"); // The error at this line.
int result = python.add(a, b).As<int>();
return Ok(result);
}
}
然后出现了一个异常:
Python.Runtime.PythonException: '没有名为'example'的模块。
1 个回答
0
在asp.net core的web API项目中无法运行Python。出现的错误是:Python.Runtime.PythonException: '没有名为'example'的模块'。
根据你的代码片段和错误信息,这说明Python解释器在尝试导入一个名为'example'的模块时找不到它。
在你的情况下,你想在ASP.NET Core应用中导入一个叫'example'的模块,但Python解释器找不到它。
要解决这个问题,你需要检查几个方面:
首先,请确认你的执行路径是正确的。可能在导入语句中有拼写错误,或者指向example.py
文件的路径不对。
比如,如果example.py在项目的根目录下,你可以尝试如下方式:
dynamic python = Py.Import("example");
但如果你的文件在子文件夹中,那么可以尝试这样:
dynamic python = Py.Import("subdirectory.example");
还有一个重要的事情是,如果example.py
不在Python的默认搜索路径中,你可能需要使用PythonEngine.PythonPath.Add()
明确添加它的目录路径。
另外,确保PythonEngine.Initialize()
只被调用一次,通常是在一个集中管理的地方,比如单例类。
最后,除了直接指定模块名外,尝试使用'example.py'文件的绝对路径。
注意:请参考这个官方文档进行配置。