十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Python.NET快速入门教程:3行代码让Python调用.NET库

Python.NET快速入门教程:3行代码让Python调用.NET库 Python.NET快速入门教程3行代码让Python调用.NET库【免费下载链接】pythonnetPython for .NET is a package that gives Python programmers nearly seamless integration with the .NET Common Language Runtime (CLR) and provides a powerful application scripting tool for .NET developers.项目地址: https://gitcode.com/gh_mirrors/py/pythonnetPython.NET包名pythonnet是一个让 Python 与 .NET 公共语言运行时CLR几乎无缝集成的开源工具。装上它你的 Python 代码就能直接 import .NET 的命名空间、调用 C# 写好的库甚至用 Python 开发 Windows 桌面 GUI反过来.NET 应用也能嵌入 Python 解释器执行脚本。对于想在 Python 里复用 .NET 库System 系列、WinForms、NuGet 包的初学者来说它是最快的桥梁。Python.NET 是什么一分钟了解Python.NET 不是把 Python 翻译成 .NET 字节码而是把 CPython 引擎直接接进 .NET / Mono 运行时。这意味着 Python 代码以原生速度运行现有的 C 扩展NumPy 等照常可用 CLR 命名空间System、System.Collections…像 Python 包一样被import 支持 Windows 的 .NET Framework、跨平台的 Mono 和 .NET Core 双向集成既能 Python 调 .NET也能 .NET 调 Python核心实现位于src/runtime/C# 端如src/runtime/PythonEngine.csPython 端的运行时加载逻辑则在pythonnet/__init__.py官方文档入口是doc/source/index.rst。一键安装pip 一条命令搞定Python.NET 发布在 PyPI 上安装只需一条命令pip install pythonnet 除了 pip它也发布在 NuGet供 .NET 侧引用。如果你从源码构建只需 .NET 6 或更新的 SDK 加 Python 本身。安装完成后运行环境会按平台自动选择默认 CLRWindows 上用 .NET FrameworkLinux / macOS 上用 Mono。快速上手3行代码调用 .NET 库这是新手最关心的部分——真的只要 3 行import clr from System import String from System.Collections import ArrayList第一行import clr会加载 CLR 运行时兼容性入口在clr.py后面两行就是在导入 .NET 库。之后你可以像操作 Python 对象一样操作 .NET 对象list ArrayList() list.Add(Python.NET) print(list.Count) # 1如果要用某个程序集assembly里的类型先用clr.AddReference加载它import clr clr.AddReference(System.Windows.Forms) from System.Windows.Forms import Form就这么简单.NET 库 ≈ Python 包命名空间 ≈ import 路径。如何选择运行时.NET Core / Mono 配置指南默认行为已足够大多数场景但想显式指定 .NET Core 运行时比如你机器上装的是 dotnet SDK有两种方式方式一环境变量export PYTHONNET_RUNTIMEcoreclr方式二代码中显式加载from pythonnet import load load(coreclr) import clr加载与运行时选择的源码逻辑在pythonnet/__init__.pyload/set_runtime/unload函数。Linux 和 macOS 上如果找不到 Mono会收到清晰的错误提示按提示安装或显式配置即可。进阶玩法用 Python 写 WinForms 桌面应用Python.NET 最炫的能力之一是直接用 Python 继承 C# 的Form类做 GUI。项目自带的示例demo/helloform.py就是一个完整的小程序继承WinForms.Form、创建按钮和文本框、注册Click事件class HelloApp(WinForms.Form): def button_Click(self, sender, args): WinForms.MessageBox.Show(Hello from Python!)运行后你会看到一个原生 Windows 窗口按钮点击弹出消息框——整个 GUI 应用没有一行 C#。同目录下还有demo/wordpad.py、demo/splitter.py等示例可参考。反向集成在 .NET 应用中嵌入 Python如果你做 C# 开发想给应用加上 Python 脚本能力Python.NET 也是标配。核心三步详见doc/source/dotnet.rst文档引用Python.Runtime.dllNuGet 包pythonnet并设置PYTHONNET_PYDLL环境变量指向 Python 库如libpython3.11.so调用PythonEngine.Initialize()在using (Py.GIL())块中导入并调用 Python 模块using (Py.GIL()) { dynamic np Py.Import(numpy); Console.WriteLine(np.cos(np.pi * 2)); // 1.0 }注意 GIL全局解释器锁管理除初始化外所有 Python 调用都必须在持有 GIL 时进行。常见问题与避坑清单问题解决思路BadPythonDllException.NET 侧嵌入时未设置Runtime.PythonDLL或PYTHONNET_PYDLLLinux 上运行时加载失败未安装 Mono或 dotnet SDK 不在 PATH 中用PYTHONNET_RUNTIMEcoreclr显式指定多次调用load()报 RuntimeError运行时只能加载一次重复调用会直接抛错见pythonnet/__init__.py的load实现想查看完整 API阅读doc/source/reference.rst与doc/source/pyreference.rst项目的单元测试覆盖非常全Python 侧测试在tests/如tests/test_engine.py、tests/test_import.pyC# 侧测试在src/embed_tests/和src/testing/遇到问题时可以照着测试用例排查。总结Python.NET 让Python 调用 .NET 库变得像import os一样自然3 行代码完成集成、pip 一条命令完成安装、跨 Windows/Linux/macOS 三大平台。无论你是想在数据分析里用 .NET 组件、用 Python 快速做桌面 GUI还是给 C# 应用加脚本层它都值得装进你的工具箱。【免费下载链接】pythonnetPython for .NET is a package that gives Python programmers nearly seamless integration with the .NET Common Language Runtime (CLR) and provides a powerful application scripting tool for .NET developers.项目地址: https://gitcode.com/gh_mirrors/py/pythonnet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表