本文目錄一覽:
c# 如何調用Python庫
這個是不是調用啊。這個僅僅是執行。如果是說調 用的話。python for .net和iron python都支持.net調 用python的模塊。
不過僅僅是執行的話也容易。假設你的start.py是一個可以執行的程序。是執行不是調用。不是import。
那麼你不需要set search paths,因為這個path是給import,也就是調用使用的。你set path沒有用。
你只需要全路徑帶過去,把start.py的全路徑補全了就可以了。
要實現調用,還需要將python的模塊編譯成c#可以使用的庫的形式。才可以直接用c#的方法import進來。很簡單的。而不需要使用python這個engine。
理論上講,如果.net支持動態加載。也可以使用動態加載的方法,使用python這個engine動態加載一個模塊。不過我不知道python for .net和iron python有沒有實現。這個太麻煩了。應該沒有完成。
所以你還是將python的代碼使用python for .net或者是iron python編譯生成可以發佈的庫。後面就簡單的了。直接在.net里import就好了。
Electron 框架中調用 Python 構建桌面應用
不同的語言、框架都有自己擅長的領域:Electron 基於 Chromium 和 Node.js 能以 Web 開發的模式打造桌面應用,開發用戶界面又快捷又簡單;Python 則在數據分析、自動化腳本等領域有非常多的應用。兩者的社區生態都十分強大,由兩者共同構建應用,在界面開發、功能、性能上能夠強強聯合;
為了簡單驗證技術可行性,我們來編寫一個 Demo:
目的:驗證 Electron 打造的桌面應用能夠調用 Python,思路是使用 RPC 或 HTTP 或 WebSocket 進行通信
Demo 功能:輸入 x、y 坐標,程序會移動鼠標到屏幕的 x,y 位置(通過 python 庫 pyautogui 實現)
Demo 運行環境:MacOS、pyInstaller: 版本 4.5.1、python: 版本 3.9.7
源碼:——– 項目源碼 ——–
注意:移動鼠標需要授予應用控制權限,在 MacOS 下設置 偏好設置 – 隱私 – 輔助功能 – 允許對應的應用。
技術棧:NodeJS、Electron、Python、aiohttp(HTTP、WebSocket)、pyautogui(控制鼠標)
為了使 NodeJS 和 Python 能夠通信,Python 需要啟動一個本地通信服務,Demo 中 py/api.py 能夠啟動一個本地 HTTP 服務:
然後我們需要執行 Python 代碼以啟動服務,為了使 NodeJS 可以執行 Python,我們使用 pyinstaller 將 Python 打包成可執行文件:
Python 啟動了本地 HTTP 服務後,Chromium 和 Node.js 就可以通過請求的方式,與 python 連接通信了:
簡單來說三個步驟:
本項目只是一個驗證思路的 Demo,真的需要在項目上實踐,還需要考慮以下幾個點:
應該使用 RPC 通信而不是 HTTP 或者 WebSocket,Demo 使用 HTTP 只是搭建方便。實踐中在建立連接、保持連接、異常重連都需要編寫更多的邏輯來處理。為什麼 Demo 沒有使用 zerorpc? 這個庫已經 4 年沒有維護了,不兼容新版 NodeJS。
項目通過 pyinstaller 打包成可執行文件來調用 python。實際上其他能編譯為可執行文件的語言也一樣。還可以使用 WebAssembly 將其他語言編譯成 .wasm,在 NodeJS 中引入執行。
無需安裝Python,就可以在.NET里調用Python庫
如果你可以很簡單的引用一個Nuget包,並在無需手動修改的情況下,一切都會自動的配置好,假如可以達到這種程度,你會感覺怎麼樣?這就是我創建Python.Included的願景,Python.Included可以把packages python-3.7.3-embed-amd64.zip包含在它的程序集里,這這樣就允許你可以通過Nuget來有效的引用Python了。為了證明它能正常工作,並可以快速提供所有的NumSharp中仍然缺少的Numpy功能,我創建了基於Python.Included的Numpy.NET這個項目。
c可以調用python嗎
可以的。
C中內嵌Python
新建立一個工程,首先需要將工作目錄設置到Python-3.1.1PCbuild中,以獲取到動態庫,至於靜態庫的包含,Include目錄的指定,那自然也是少不了的。文件中需要包含Python.h文件,這也是必須的。
接口中
Py_Initialize();
Py_Finalize();
其他的根據需求,再引入相應的python builder 即可
原創文章,作者:TDPA,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/135383.html
微信掃一掃
支付寶掃一掃