通过pythonnet使用Python的C#程序集

时间:2011-06-13 16:07:36

标签: python .net python.net

我使用的是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中的库),我很乐意澄清这个问题。

2 个答案:

答案 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'>