我使用的是64位Windows 7。我已经设法下载并安装了pythonnet,所以
import clr
clr.AddReference("System.Windows.Forms")
from System.Windows.Forms import Form
工作正常。我还下载并编译/运行了一个创建大量程序集的C#应用程序。有问题的申请是ARDrone-Control-.NET。
如何使用Python生成的DLL文件(而不仅仅是内置的C#类)。
由于我从未使用过C#(这就是为什么我想使用Python中的库),我很乐意澄清这个问题。
答案 0 :(得分:12)
只是提供另一种方法:
import sys
sys.path.append("C:\Path\to\your\assemblies")
clr.AddReference('MyAssembly')
from MyAssembly import MyClass
MyClass.does_something()
这假设在C:\Path\to\your\assemblies
文件夹中有一个MyAssembly.dll文件。
所以'技巧'是你必须在sys.path
之前将程序集文件夹添加到clr.AddReference
。
答案 1 :(得分:3)
从我收集的内容中你试图在Python.Net中加载外部程序集,我对该库的工作很少。您应该考虑使用IronPython而不是使用Python.Net,您可以通过.Net的反射加载程序集
Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import clr
>>> from System.Reflection import Assembly
>>> dll1 = Assembly.LoadFile("C:\Python\Python27-32\Lib\site-packages\Python.Runtime.dll")
>>> clr.Python.Runtime
<module 'Python.Runtime'>
>>> clr.Python.Runtime.PythonEngine
<class 'Python.Runtime.PythonEngine'>