Python 的 .Net 和 Mono 集成
项目描述
Python.NET 是一个包,它为 Python 程序员提供了与 .NET 公共语言运行时 (CLR) 几乎无缝的集成,并为 .NET 开发人员提供了强大的应用程序脚本工具。它允许 Python 代码与 CLR 交互,也可用于将 Python 嵌入到 .NET 应用程序中。
从 Python 调用 .NET 代码
Python.NET 允许将 CLR 命名空间本质上视为 Python 包。
import clr
from System import String
from System.Collections import *
要加载程序集,请使用clr 模块中的AddReference函数:
import clr
clr.AddReference("System.Windows.Forms")
from System.Windows.Forms import Form
在 .NET 中嵌入 Python
所有对 python 的调用都应该在 using (Py.GIL()) {/* Your code here */}块内。
使用动态 mod = Py.Import("mod")导入 python 模块,然后您可以正常调用函数,例如mod.func(args)。
使用mod.func(args, Py.kw("keywordargname", keywordargvalue))或 mod.func(args, keywordargname: keywordargvalue)应用关键字参数。
所有 python 对象都应该声明为动态类型。
涉及 python 和文字/托管类型的数学运算必须首先具有 python 对象,例如。np.pi * 2有效, 2 * np.pi无效。
例子
static void Main(string[] args)
{
using (Py.GIL())
{
dynamic np = Py.Import(<s>"numpy"</s>);
Console.WriteLine(np.cos(np.pi * 2));
dynamic sin = np.sin;
Console.WriteLine(sin(5));
double c = np.cos(5) + sin(5);
Console.WriteLine(c);
dynamic a = np.array(new List<float> { 1, 2, 3 });
Console.WriteLine(a.dtype);
dynamic b = np.array(new List<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 中找到:
.NET 基金会
该项目由.NET Foundation支持。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
pythonnet-2.5.2.tar.gz
(1.9 MB
查看哈希)
内置发行版
pythonnet-2.5.2-cp38-cp38-win_amd64.whl
(82.0 kB
查看哈希)
pythonnet-2.5.2-cp38-cp38-win32.whl
(82.0 kB
查看哈希)
pythonnet-2.5.2-cp37-cp37m-win_amd64.whl
(82.0 kB
查看哈希)
pythonnet-2.5.2-cp37-cp37m-win32.whl
(82.0 kB
查看哈希)
pythonnet-2.5.2-cp36-cp36m-win_amd64.whl
(82.0 kB
查看哈希)
pythonnet-2.5.2-cp36-cp36m-win32.whl
(82.0 kB
查看哈希)
pythonnet-2.5.2-cp35-cp35m-win_amd64.whl
(82.0 kB
查看哈希)
pythonnet-2.5.2-cp35-cp35m-win32.whl
(81.9 kB
查看哈希)
pythonnet-2.5.2-cp27-cp27m-win_amd64.whl
(81.5 kB
查看哈希)
pythonnet-2.5.2-cp27-cp27m-win32.whl
(81.4 kB
查看哈希)