用于python的.net和mono集成

pythonnet的Python项目详细描述


Join the chat at https://gitter.im/pythonnet/pythonnet

appveyor shieldtravis shieldcodecov shield

license shieldpypi package versionpython supported shieldstackexchange shield

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中找到:

https://github.com/pythonnet/pythonnet/wiki

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java文本字段显示不正确,它看起来像一条狭缝   如何使Java泛型方法成为静态的?   java如何反序列化XML列表?   java如何防止RadioGroup事件?   java如何通过使某些文件变暗来定制EclipseRCP中的c透视图?   java将数组作为参数传递给类   java在多个JAR中只调用一次方法   java如何为我的spring boot控制器执行单元测试?   java正确使用HashSet。包含()?   java从单独的JForm访问JComboBox数据   java 安卓。所容纳之物ContextWrapper。openFileOutput空指针异常   使用setOnclickListener和View时出现java错误   方法体之外的java类中的字段初始化   java谷歌应用引擎服务不可用   java无法打开指定的文件夹安卓 R   java重构闭包标准用于固定列表中表达式的最大数量为1000   java使用静态   java WEKA交叉验证线性回归我能得到RMSPE吗?