在C#中调用Python代码的两种实现方式

2025-03-28 15:50

本文主要是介绍在C#中调用Python代码的两种实现方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《在C#中调用Python代码的两种实现方式》:本文主要介绍在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教...

C#调用Python代码的方式

在 C# 中调用 Python 代码有几种不同的方法。

一种常用的方法是使用 Python.NET 库,它允许你在 C# 中直接调用 Python 代码。另一种方法是使用外部进程调用 Python 脚本,例如通过 Process.Start

下面是两种主要方法的详细介绍:

1. 使用 Python.NET

安装 Python.NET

首先,你需要安装 Python.NET。可以通过 NuGet 包管理器来安装:

Install-Package Python.Runtime

示例代码:

接下来,让我们看看如何使用 Python.NET 在 C# 中调用 Python 代码。

using System;
using Python.Runtime;

namespace CSharpPythonIntegration
{
    class Program
    {
        static void Main(string[] args)
        {
     php       // 初始化 Python 运行时
            using (Py.GIL())
            {
                // 加载 Python 模块
                dynamic pyModule = Py.Import("your_python_module");

                // 调用 Python 函数
                dynamic result = pyModule.YourFunctionName(args);

                Console.WriteLine($"Result from Python: {result}");
            }
        }
    }
}

注意事项:

  • 在调用 Python 代码之前,确保 Python 运行时环境已经正确安装在目标机器上。
  • 你需要确保 Python 模块和脚本的路径正确无误。
  • 使用 Py.GIL() 来确保在 C# 中正确地处理全局解释器锁 (GIL)。

2. 使用外部进程调用 Python 脚本

如果你不想使用 Python.NET,你可以通过创建一个进程来运行 Python 脚本。

示例代码:

下面是一个简单的例子,演示如何使用 System.Diagnostics.Process 类来运行 Python 脚本。

using System;
using System.Diagnostics;

namespace CSharpPythonIntegration
{
    class Program
    {
        static void Main(string[] args)
        {
            string pythonScriptPath = @"C:\path\to\your\script.py";
            string pythonExePath = @"C:\Python39\python.exe"; // Python 解释器路径

            ProcessStartInfo startInfo = new Proc编程essStartInfo(pythonExePath, pythonScriptPath)
            {
                RedirectStandardOutput = true,
                UseShellExecute = false,
                CreateNoWindow = true
            };

            using (Process process = new Process())
            {
                process.StartInfo = sjstartInfo;
                process.Start();

                // 读取 Python 脚本的输出
                string output = prphpocess.StandardOutput.ReadToEnd();
                process.WaitForExit();

                Console.WriteLine($"Output from Python script: {output}");
            }
        }
    }
}

注意事项:

  • 你需要确保 Python 解释器的路径是正确的。
  • 如果你的 Python 脚本依赖于外部模块,确保这些模块已经安装在目标机器上。
  • 如果你的 Python 脚本需要输入参数,可以在 ProcessStartInfo 构造函数的第二个参数中添加参数字符串。

这两种方法都可以实现在 C# 中调用 Python 代码的目标,但是 Python.NET 提供了更China编程紧密的集成,而使用外部进程则更加简单直接,适用于简单的调用场景。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持China编程(www.chinasem.cn)。

这篇关于在C#中调用Python代码的两种实现方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1153992

相关文章

C#如何调用C++库

《C#如何调用C++库》:本文主要介绍C#如何调用C++库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录方法一:使用P/Invoke1. 导出C++函数2. 定义P/Invoke签名3. 调用C++函数方法二:使用C++/CLI作为桥接1. 创建C++/CL

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

利用Python打造一个Excel记账模板

《利用Python打造一个Excel记账模板》这篇文章主要为大家详细介绍了如何使用Python打造一个超实用的Excel记账模板,可以帮助大家高效管理财务,迈向财富自由之路,感兴趣的小伙伴快跟随小编一... 目录设置预算百分比超支标红预警记账模板功能介绍基础记账预算管理可视化分析摸鱼时间理财法碎片时间利用财

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

如何在 Spring Boot 中实现 FreeMarker 模板

《如何在SpringBoot中实现FreeMarker模板》FreeMarker是一种功能强大、轻量级的模板引擎,用于在Java应用中生成动态文本输出(如HTML、XML、邮件内容等),本文... 目录什么是 FreeMarker 模板?在 Spring Boot 中实现 FreeMarker 模板1. 环