繁体   English   中英

使用 Pythonnet 从 C# 调用 Python 会引发导入错误

[英]Calling Python from C# using Pythonnet throws import error

我有一个用例,我希望能够从我的 C# 代码库调用一个用 Python 编写的函数。 当我调用此函数时,我希望能够将 C# 类型(自定义类)传递给 Python 函数,为此我正在探索pythonnet

Python 项目具有以下示例结构 -

main.py
service1.py

main.py具有调用service1.py公开的方法的主要功能 -

from Service1 import MyService1

def Run(a, b):
   service1 = MyService1()
   service1.method(a, b)

现在从 C# 端,当我尝试执行 Python 时它抛出错误 -

Python.Runtime.PythonException:“没有名为‘Service1’的模块”

C#代码-

Runtime.PythonDLL = @"C:\Program Files\Python39\Python39.dll";
PythonEngine.Initialize();
using (Py.GIL())
{
  using (var scope = Py.CreateScope())
  {
     scope.Exec(File.ReadAllText(@"..\Python\main.py"));
   }
 }

我需要如何正确导入所需的类?

我遇到这个问题是因为我的 Python 脚本不是构建文件夹的一部分。 我必须确保所需的 Python 文件是成功构建解决方案时构建文件夹的一部分。

要使文件成为构建文件夹的一部分,您需要 - 在 VS 中右键单击文件 -> 属性 -> 复制到输出目录 -> 选择始终复制或如果较新则复制。

或者,您也可以从 .csproj 文件执行此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM