架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 731|回复: 3

[资料] .NET/C# 调用 Python 环境执行 .py 脚本

[复制链接]
发表于 2025-2-11 16:01:21 | 显示全部楼层 |阅读模式
需求:如今 python 编程非常火热,在数据分析和科学研究、大模型、深度学习等应用广泛,有些模型算法是 python 写的,需要使用 .NET 执行 python 脚本,传入参数并获取结果。网上的解决方案有:使用 process 执行、IronPython、pythonnet,最终选择使用 pythonnet。

pythonnet-Python.NET

Python.NET 是一个软件包,它使 Python 程序员能够几乎无缝地集成 .NET 通用语言运行时 (CLR),并为 .NET 开发人员提供强大的应用程序脚本工具。它允许 Python 代码与 CLR 交互,也可用于将 Python 嵌入到 .NET 应用程序中。

地址:超链接登录可见。

准备 Python 环境

本文使用 python-3.13.2-embed-amd64 作为运行环境,参考:

Python embed 可嵌入包使用 pip 安装包
https://www.itsvse.com/thread-10941-1-1.html

Python-3.13.2 嵌入包 64 位下载:超链接登录可见。

新建 .NET 8 控制台

新建 .NET 8 控制台引用,引用如下:

由于 pythonnet 会使用 BinaryFormatter 类,执行中会抛出如下异常:

Unhandled exception. System.NotSupportedException: BinaryFormatter serialization and deserialization are disabled within this application. See 超链接登录可见。 for more information.

解决方法,编辑 .csproj 在 <PropertyGroup> 节点添加如下配置:

完整配置如下:

Py.GIL() 是 Python.NET 库中的一个重要函数,用于获取和释放全局解释器锁(Global Interpreter Lock, GIL)。GIL 是 CPython 解释器中的一个机制,确保同一时刻只有一个线程在执行 Python 字节码。这在多线程环境中非常重要,尤其是在 Python 和 .NET 代码混合使用的情况下。

Python 的 float 类型实际上是双精度浮点数(64 位),与 C# 的 double 类型相对应。

直接执行 python 代码

对于简单的 python 代码,可用直接执行,代码如下:

屏幕截图 2025-02-11 153517.jpg

调用 python 函数

代码如下:

屏幕截图 2025-02-11 155528.jpg

部署至 Linux 环境测试

可用正常运行,测试如下:

屏幕截图 2025-02-11 161028.png

参考:
超链接登录可见。
超链接登录可见。
超链接登录可见。




上一篇:Linux 使用 pyenv 安装 Python 环境
下一篇:Angular 18 系列(三十一)VS Code 开发辅助插件
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2025-2-11 16:08:17 | 显示全部楼层
将 list 数组(<class 'list'>)作为参数调用 python 函数


代码如下:

屏幕截图 2025-02-11 160549.jpg
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2025-2-11 16:25:40 | 显示全部楼层
c# 调用 python 函数获取元组 <class 'tuple'> 返回值

代码如下:

屏幕截图 2025-02-11 162505.jpg

码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2025-2-24 09:27:40 | 显示全部楼层
CSnakes——一种将 Python 代码嵌入 .NET 项目的工具

源码:超链接登录可见。
文档:超链接登录可见。
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2025-6-16 12:21

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表