C# pythonnet导入自定义.net代码
我试图使用pythonnet从python调用.NET代码,但在编译的程序集上出现导入错误。我能够制作以下mwe 文件夹结构:C# pythonnet导入自定义.net代码,c#,python,.net,python.net,C#,Python,.net,Python.net,我试图使用pythonnet从python调用.NET代码,但在编译的程序集上出现导入错误。我能够制作以下mwe 文件夹结构: pynet/ TestPyCS/ TestPyCS/ bin/ Debug/ TestPyCS.dll TestPyCS.pdb TestCs.cs test.py C#项目只包
pynet/
TestPyCS/
TestPyCS/
bin/
Debug/
TestPyCS.dll
TestPyCS.pdb
TestCs.cs
test.py
C#项目只包含一个文件(TestCs.cs):
我用target.NETFramework 4.7.2构建的
Python代码(在test.py中):
我得到的结果是:
D:\path\to\pynet\TestPyCS\TestPyCS\bin\Debug\TestPyCS.dll
TestPyCS, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Hello world!
['__doc__', '__loader__', '__name__', '__package__', '__path__', '__spec__']
Traceback (most recent call last):
File ".\test.py", line 21, in <module>
from TestPyCS import TestCS
ImportError: cannot import name 'TestCS'
D:\path\to\pynet\TestPyCS\TestPyCS\bin\Debug\TestPyCS.dll
TestPyCS,版本=1.0.0.0,区域性=中立,PublicKeyToken=null
你好,世界!
[“文档”、“加载程序”、“名称”、“包”、“路径”、“规范”]
回溯(最近一次呼叫最后一次):
文件“\test.py”,第21行,在
从TestPyCS导入TestCS
ImportError:无法导入名称“TestCS”
我已经研究了以下问题:
但我没能解决这个问题
import clr
import os
import sys
abshere = os.path.dirname(os.path.abspath(__file__))
dlldir = os.path.join(abshere, "TestPyCS", "TestPyCS", "bin", "Debug")
sys.path.append(dlldir)
print(clr.FindAssembly("TestPyCS"))
print(clr.AddReference("TestPyCS"))
# this is just for testing pythonnet
from System import Console
Console.WriteLine("Hello world!")
import TestPyCS
print(dir(TestPyCS))
from TestPyCS import TestCS
t = TestCS()
print(t.Test())
D:\path\to\pynet\TestPyCS\TestPyCS\bin\Debug\TestPyCS.dll
TestPyCS, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Hello world!
['__doc__', '__loader__', '__name__', '__package__', '__path__', '__spec__']
Traceback (most recent call last):
File ".\test.py", line 21, in <module>
from TestPyCS import TestCS
ImportError: cannot import name 'TestCS'