无法在ASP.NET Core Web API项目中运行Python

0 投票
1 回答
40 浏览
提问于 2025-04-14 15:54

我正在使用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'文件的绝对路径。

注意:参考这个官方文档进行配置

撰写回答