[英]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.