程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

如何在 C# 中運行 Python 代碼

編輯:Python

前言

Python是一門強大的編程語言。特別的是,它還具有眾多出色的庫(例如numPy,sciPy,pandas等),可以顯著簡化和加速開發。因此,在解決某些問題時,通過 Python 實現可能是最理想的方式!

但是,我們又希望代碼能在 C# 中運行。

那麼,可以試試pythonnet

pythonnet

pythonnet可以將 Python 代碼集成運行在 .NET 4.0+ 的公共語言運行時(CLR)中。

需要注意的是,它並不是將 Python 代碼編譯成 IL 代碼,而是將 Python 的 CPython 引擎與 .NET 運行時集成,以保證 CLR 可以使用現有的 Python 代碼和 C-API 擴展,同時保持 Python 代碼的本機執行速度。

Demo

1. 創建項目

創建一個控制台項目,引用 pythonnet Nuget 包。

注意,必須勾選“包括預發行版”,才能看到官方維護的 Nuget 包:

計算機上需要安裝 Python 3

2. 初始化

需要先設置Runtime.PythonDLL屬性, 否則程序會拋出BadPythonDllException

具體文件位置對應你安裝的 Python 版本和文件夾:

Runtime.PythonDLL = Path.Combine(Environment.GetFolderPath(
    Environment.SpecialFolder.LocalApplicationData),
    @"Programs\Python\Python310\python310.dll");
PythonEngine.Initialize();

3. 使用 Python 庫

所有對 python 的調用都必須在一個using (Py.GIL())塊中。

使用Py.Import導入 python 模塊後,你就可以正常調用對應的函數:

這裡,我們使用了numpy庫(需要已經 pip install):

dynamic np = Py.Import("numpy");
Console.WriteLine(np.pi);

4. 使用 Python 腳本

我們也可以執行 Python 腳本代碼。

首先,創建DemoCode.py文件,定義了Demo類和SayHello方法,代碼如下:

class Demo:
    def SayHello(self, name):
        return "Hello " + name

調用代碼如下:

dynamic demoCode = Py.Import("DemoCode");  
//實例化 Demo 類
dynamic demo = demoCode.Demo();  
//調用 Demo 類的 SayHello 方法
Console.WriteLine(demo.SayHello("MyIO"));

最後,運行結果如下圖:

結論

利用pythonnet,在 C# 中運行 Python 代碼就是這麼簡單!

添加微信號【MyIO666】,邀你加入技術交流群


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved