首页 游戏 软件 资讯 排行榜 专题
首页
编程语言
c#如何调用python_c#调用python教程

c#如何调用python_c#调用python教程

热心网友
92
转载
2026-04-18

推荐使用Python.NET(pythonnet)替代Process.Start调用Python脚本,实现跨语言对象传递、异常捕获、解释器复用与断点调试;需确保Python与.NET架构一致、版本兼容、采用官方CPython并正确配置PATH与sys.path。

c#如何调用python_c#调用python教程

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

直接采用 Process.Start 启动 Python 脚本虽然操作简单,但仅适用于一次性、低交互的场景。若需频繁数据交换、共享内存或深度集成,此方法便显得效率低下且功能受限。更稳定高效的方案是使用 Python.NET(即 pythonnet),它允许 C# 直接嵌入 Python 运行时,实现无缝交互——前提是 Python 环境与 .NET 运行时架构需保持一致,例如均为 x64 平台。

为何 Process.Start 方案存在局限

该方法本质是启动独立外部进程执行脚本,仅适合“输入-处理-输出”的批处理任务,例如调用数据清洗脚本并读取生成的 CSV 文件。但其存在以下明显缺陷:

  • 无法直接传递复杂对象(如 List 或自定义类实例)。
  • 难以捕获 Python 内部异常详情,仅能获取标准错误输出的文本信息。
  • 无法复用 Python 解释器状态,每次调用均需重新导入模块,产生额外开销。
  • 调试时无法在 C# 与 Python 代码间进行跨语言断点跳转。

典型错误提示如:System.ComponentModel.Win32Exception: The system cannot find the file specified。这通常因 Python 可执行文件路径未正确配置,或 Conda 环境未激活所致。

使用 pythonnet 前的三大必备检查

该库并非“安装即用”,其底层依赖 Python C API 与 .NET 运行时的 ABI 兼容性,因此务必完成以下准备工作:

立即学习“Python免费学习笔记(深入)”;

  • pythonnet 版本必须与本地 Python 版本严格对应(例如 Python 3.9 对应 pythonnet==3.0.1,避免盲目使用最新版)。
  • C# 项目目标框架建议为 net6.0 或更高版本(net5.0 也可支持,但不推荐使用 netcoreapp3.1)。
  • Python 安装须为官方 CPython(通过 MSI 安装包),不可使用嵌入式版本或 Miniconda 精简版。同时需确保 PYTHONHOMEPYTHONPATH 等环境变量不会干扰解释器初始化。

常见问题:执行 PythonEngine.Initialize() 时抛出 System.DllNotFoundException: python39.dll。这并非系统未安装 Python,而是运行时未能定位对应 DLL 文件。请检查 PATH 环境变量,确保包含 Python 安装根目录(如 C:\Python39),而非仅 Scripts 等子目录。

C# 调用 Python 函数的最小实践代码

假设存在名为 math_utils.py 的 Python 脚本,内容如下:

def add(a, b):
    return a + b

class Calculator:
    def multiply(self, x, y):
        return x * y

在 C# 中对应的调用代码应如下所示(注意命名空间引用):

using Python.Runtime;

PythonEngine.Initialize();
using (Py.GIL()) {
  dynamic sys = Py.Import("sys");
  sys.path.append(@"C:\your\script\path"); // 此步骤必需,否则 import 将失败
  dynamic utils = Py.Import("math_utils");
  int result1 = utils.add(3, 5); // 返回 int 类型
  dynamic calc = utils.Calculator();
  double result2 = calc.multiply(4.5, 2); // 同样支持浮点数运算
}

需重点关注三个要点:第一,必须使用 Py.GIL(),因为 CPython 的全局解释器锁(GIL)要求所有 Python 对象操作在其作用域内完成。第二,sys.path.append 不可或缺——pythonnet 不会自动继承当前 Python 环境的 sys.path,必须手动添加脚本路径。第三,实际难点往往在于环境对齐:Python DLL 文件、系统位数(32/64位)、运行时版本、路径配置,任一环节出错均可能导致 Initialize 失败。因此,建议先验证基础环境:执行 Py.Import("os").name 若能正确返回 'nt'(Windows)或 'posix'(Linux/macOS),即标志环境配置成功。

来源:https://www.php.cn/faq/2343599.html
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

c#如何调用python_c#调用python教程
编程语言
c#如何调用python_c#调用python教程

推荐使用Python NET(pythonnet)替代Process Start调用Python脚本,实现跨语言对象传递、异常捕获、解释器复用与断点调试;需确保Python与 NET架构一致、版本兼容、采用官方CPython并正确配置PATH与sys path。 直接采用 Process Start

热心网友
04.18
Python怎么把PyTorch模型导出为ONNX格式_torch.onnx.export与dynamic_axes设定
编程语言
Python怎么把PyTorch模型导出为ONNX格式_torch.onnx.export与dynamic_axes设定

PyTorch模型导出ONNX格式完整指南:torch onnx export参数详解与dynamic_axes动态轴设置技巧 模型导出成功但推理结果异常?动态轴设置不当是主要原因 许多深度学习工程师在将PyTorch模型转换为ONNX格式时都会遇到一个典型问题:导出过程顺利通过,但在ONNX Ru

热心网友
04.18
Python如何快速统计列表中元素频率_使用collections.Counter高效计数
编程语言
Python如何快速统计列表中元素频率_使用collections.Counter高效计数

Counter:Python中统计元素频率最直接高效的方式 在Python编程中,当需要快速统计一个列表或可迭代对象中各元素的出现次数时,最省心且性能出色的工具是什么?答案无疑是collections Counter。它作为字典(dict)的子类,专为计数场景设计,开箱即用。它能自动完成初始化、支持

热心网友
04.18
Mac系统如何彻底卸载Python多版本_清理残留路径与配置文件
编程语言
Mac系统如何彻底卸载Python多版本_清理残留路径与配置文件

Mac系统如何彻底卸载Python多版本_清理残留路径与配置文件 确认哪些 Python 是你装的,哪些是系统自带的 在Mac上彻底清理Python,首要任务是准确区分用户自行安装的版本与系统内置版本。系统自带的python(通常是Python 2 7)与macOS底层功能紧密集成,切勿尝试删除或修

热心网友
04.17
CodeGeeX怎么写Python网络扫描代码_CodeGeeX辅助实现端口扫描逻辑【网络扫描】
AI
CodeGeeX怎么写Python网络扫描代码_CodeGeeX辅助实现端口扫描逻辑【网络扫描】

一、使用socket模块逐端口连接检测 想从最基础、最轻量的方法入手?Python标准库里的socket模块是个不错的起点。它通过尝试建立TCP连接来判断端口状态,无需任何外部依赖,适合快速验证或小范围探测。 具体操作起来很简单:在你安装了CodeGeeX插件的IDE(比如VS Code)里新建一个

热心网友
04.17

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

DreamFace
AI
DreamFace

DreamFace是什么 当你还在为制作一段生动视频发愁时,市面上已经出现了能“点石成金”的工具。DreamFace,由New Port LLC开发,就是这样一个专注于照片动画和AI头像生成的AI视频解决方案。它的目标很明确:为社交媒体用户、教育工作者、商务人士等群体,提供一种近乎零门槛的视频制作方

热心网友
04.18
Zop Media
AI
Zop Media

Zop Media Car Dealer Software是什么 在汽车零售这个数字化浪潮席卷的行业里,高效的在线管理工具早已不是“锦上添花”,而是“制胜必需品”。众多选择中,Zop Media公司推出的“Zop Media Car Dealer Software”占据了一席之地。顾名思义,这是一款

热心网友
04.18
Dora AI
AI
Dora AI

Dora是什么 如果说几年前,创建一个视觉效果酷炫、带有3D动画的网站还是专业开发者的“专利”,那今天,这个门槛正在被轻松跨越。Dora的出现,恰恰扮演了这个“破壁者”的角色。它是一款专注于无代码创建3D动画网站的AI工具,由Dora团队匠心打造。无论是设计师、创业者,还是仅仅想快速搭建一个专业站点

热心网友
04.18
vos模式怎么玩 是什么?基础说明与使用场景
游戏攻略
vos模式怎么玩 是什么?基础说明与使用场景

VOS模式:一种经典的音乐游戏玩法在音乐游戏的广阔世界里,VOS模式是一个承载着许多玩家早期记忆的经典玩法。它并非指代某一款特定的游戏,而是一种游戏方式的统称。其名称来源于一款名为《Virtual Orchestra Studio》的软件,这款软件允许玩家使用电脑键盘来模拟演奏多种乐器,从而跟随音乐

热心网友
04.18
VS2019打不开或没反应该怎么解决-打不开或没反应该的解决方法
电脑教程
VS2019打不开或没反应该怎么解决-打不开或没反应该的解决方法

VS2019打不开或没反应?资深工程师教你高效排查与修复 Visual Studio 2019 是微软推出的强大集成开发环境,广泛应用于各类软件开发。然而,部分用户在启动时可能会遭遇程序无响应或完全无法打开的问题,严重影响工作效率。本文由资深技术工程师整理,提供一套系统性的故障排除方案,帮助您快速定

热心网友
04.18