用于python的.net和mono集成
pythonnet的Python项目详细描述
python for.net是一个让python程序员几乎 与.NET公共语言运行库(CLR)和 为.NET开发人员提供了功能强大的应用程序脚本工具。它 允许python代码与clr交互,也可以用于 将python嵌入到.net应用程序中。
从python调用.net代码
python for.net允许将clr名称空间实质上视为 python包。
import clr from System import String from System.Collections import *
要加载程序集,请使用^{tt2}中的AddReference函数$ 模块:
import clr clr.AddReference("System.Windows.Forms") from System.Windows.Forms import Form
在.net中嵌入python
- 所有对python的调用都应该在 using (Py.GIL()) {/* Your code here */}块。
- 使用dynamic mod = Py.Import("mod")导入python模块,然后 您可以正常调用函数,例如mod.func(args)。
- 使用mod.func(args, Py.kw("keywordargname", keywordargvalue))或 mod.func(args, keywordargname: keywordargvalue)应用关键字 论据。
- 所有python对象都应声明为dynamic类型。
- 涉及python和literal/managed类型的数学操作 必须首先拥有python对象,例如np.pi * 2works, 2 * np.pi没有。
示例
staticvoidMain(string[]args){using(Py.GIL()){dynamicnp=Py.Import("numpy");Console.WriteLine(np.cos(np.pi*2));dynamicsin=np.sin;Console.WriteLine(sin(5));doublec=np.cos(5)+sin(5);Console.WriteLine(c);dynamica=np.array(newList<float>{1,2,3});Console.WriteLine(a.dtype);dynamicb=np.array(newList<float>{6,5,4},dtype:np.int32);Console.WriteLine(b.dtype);Console.WriteLine(a*b);Console.ReadKey();}}
输出:
1.0 -0.958924274663 -0.6752620892 float64 int32 [ 6. 10. 12.]
有关安装、常见问题解答、疑难解答、调试和 使用pythonnet的项目可以在wiki中找到: