Skip to main content

Python 的 .Net 和 Mono 集成

项目描述

在 https://gitter.im/pythonnet/pythonnet 加入聊天

供应商盾牌 特拉维斯盾 编解码器盾

执照盾牌 pypi 包版本 康达锻造版 python支持的盾牌 堆栈交换盾

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

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

邮件列表

https://mail.python.org/mailman/listinfo/pythondotnet

聊天

https://gitter.im/pythonnet/pythonnet

.NET 基金会

该项目由.NET Foundation支持。

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

pythonnet-2.5.2.tar.gz (1.9 MB 查看哈希

已上传 source

内置发行版

pythonnet-2.5.2-cp38-cp38-win_amd64.whl (82.0 kB 查看哈希

已上传 cp38

pythonnet-2.5.2-cp38-cp38-win32.whl (82.0 kB 查看哈希

已上传 cp38

pythonnet-2.5.2-cp37-cp37m-win_amd64.whl (82.0 kB 查看哈希

已上传 cp37

pythonnet-2.5.2-cp37-cp37m-win32.whl (82.0 kB 查看哈希

已上传 cp37

pythonnet-2.5.2-cp36-cp36m-win_amd64.whl (82.0 kB 查看哈希

已上传 cp36

pythonnet-2.5.2-cp36-cp36m-win32.whl (82.0 kB 查看哈希

已上传 cp36

pythonnet-2.5.2-cp35-cp35m-win_amd64.whl (82.0 kB 查看哈希

已上传 cp35

pythonnet-2.5.2-cp35-cp35m-win32.whl (81.9 kB 查看哈希

已上传 cp35

pythonnet-2.5.2-cp27-cp27m-win_amd64.whl (81.5 kB 查看哈希

已上传 cp27

pythonnet-2.5.2-cp27-cp27m-win32.whl (81.4 kB 查看哈希

已上传 cp27