用于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为什么@DELETE REST不起作用?   带有JPA2的java表值参数。1和Hibernate,Sql Server   如何将Java类添加到Xamarin VS2017项目   绘制多边形时出现java空指针异常   java Apache WebClient 303状态未重定向   java如何用一组字符串数组从数据库中获取数据   java是否可以使用Google Drive API向文件中添加脚本?   java组织。阿帕奇。贾斯珀。JspC jar文件下载   java在整个JSON映射中将单个值作为JSON流   通过命令行将文件输入到java   java rs.next()总是返回false   java标记异常,通知调用方利用异常消息   java Spring YML数组属性为空