【发布时间】:2021-04-16 09:12:17
【问题描述】:
我正在尝试在 Anaconda 下使用 python.NET 将 c# 模块导入 Python
这已使用 pip install pythonnet 安装,报告“成功安装 pythonnet-2.5.2”
从那里使用 python 应该可以执行以下无法正常工作的操作。 Jetbrains dotPeek 可以看到该模块,并且对标准 Windows dll 的调用工作正常。 我做错了什么?
clr.AddReference(R'C:\Program Files (x86)\UVtools\UVtools.Core.dll')
from UVtools.Core import About
>>ModuleNotFoundError: No module named 'UVtools'
# never gets here:
print(About.Software)
这很好用:
import clr
clr.AddReference("System.Windows.Forms")
from System.Windows.Forms import Form
form = Form()
print(dir(form))
>> ['AcceptButton', ...
这也不起作用(尝试以不同的方式访问同一个 dll)
import System
uvTools = System.Reflection.Assembly.LoadFile(R'C:\Program Files (x86)\UVtools\UVtools.Core.dll')
print(uvTools.FullName)
print(uvTools.Location)
>>UVtools.Core, Version=2.8.4.0, Culture=neutral, PublicKeyToken=null
>>C:\Program Files (x86)\UVtools\UVtools.Core.dll
# But the following all fail with the same fundamental error:
print(uvTools.UVtools.Core.About)
print(uvTools.Core.About)
print(uvTools.About)
>>AttributeError: 'RuntimeAssembly' object has no attribute 'About'
JetBrains dotPeek 可以看到模块,这对我来说暗示这不是 dll 的问题。
我确实在其他地方看到,如果尝试使用 ctype,那么您需要在 c# 基本代码中包含“[DllExport("add", CallingConvention = CallingConvention.Cdecl)]",但我认为这不适用于 python。 NET clr 调用
【问题讨论】:
标签: dllimport python.net