PTT推薦

[討論] 在 .NET 使用 Pythonnet 的應用情境

看板Soft_Job標題[討論] 在 .NET 使用 Pythonnet 的應用情境作者
fundamental
(呵呵呵呵呵)
時間推噓 7 推:7 噓:0 →:10

板上各位大大好

最近工作有接觸到 Pythonnet

想請教一下有使用過 Pythonnet 大大的經驗

我們部門軟體的核心架構是使用.NET ( UI, Custom Class, Custom Collection... )

為了使程式外部化,將部分功能的模組寫在 Python

透過 Pythonnet 就可以在 .NET 動態執行 Python Script

Python 的好處是有很多現成的 Package 可以縮短軟體開發的時間


但 Python 與 .NET 是兩種不同的語言,資料結構當然也不同

在這種使用情境下寫的 Python Code 傳入的變數若是定義在 .NET 的物件

則必須在 Python method 裡操作 .NET 物件的 property , method

要怎麼使用 .NET 物件還得回去看 C# 寫的 Source Code


且這種方式很難 Debug Python Code

因為 App 是 .NET,故 IDE 只能 Debug .NET 的部分

若 Python Script 寫的很複雜或呼叫很多層,要 Debug Python 就只能到處加 Print


而 Python Script 執行結束後,所有變數都會消失

若要 Keep 住某些 Python 變數的狀態或資料,必須要先轉成 .NET 物件並存到 .NET
Collection

其他 Python Script 要使用已保留資料,就必須再去從 .NET Collection 把資料拿出來

因為高度相依 .NET 建立的資料結構及物件,若沒有使用我們部門的 .NET 核心,這些
Python 模組不能單獨使用

寫出來的 Python Code 感覺變得很奇怪,不像是 Python


雖然有問過部門前輩現行做法的奇怪之處,但得到的回應是 習慣就好了 (疑?

因此想問看看板上大大在 .NET 使用 Pythonnet 是在什麼情境會需要?

這種程式開發方法會是主流嗎? 謝謝~

--

※ PTT 留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.243.30.121 (臺灣)
PTT 網址

devilkool08/13 01:35我不懂為什麼要這麼麻煩......

orangeterry08/13 02:29PTVS可以同時debug python和c#

laputaflutin08/13 05:27為什麼不把.net保成一個服務讓外部python直接call?

jinmin8808/13 09:42為什麼不用json格式來做序列化跟反序列化來交換就好?

herrowui08/13 10:29其中一邊做成webapi給另一邊呼叫應該比較容易吧!

Murasaki011008/13 10:30json protobuf這些去decouple

Phenomenon08/13 11:03未看先猜最原本的 code 就這樣寫,後來加功能的就複

Phenomenon08/13 11:03製一樣的模式繼續寫,最後就大到改不動了。

fundamental08/13 23:33謝謝 我找時間試一下^^@orangeterry

fundamental08/13 23:38@laputaflutin 有些是包成 dll 讓 python call 但

fundamental08/13 23:38 UI 在 .NET做完 Python 某些行為還得把資料拿回 UI

fundamental08/13 23:38

fundamental08/13 23:49@jinmin88 變數可以存沒問題,但兩種語言型別不同的

fundamental08/13 23:49問題會建議怎麼處理呢?

fundamental08/13 23:58@Murasaki0110 非常感謝,認識了一個厲害的東西!

fundamental08/14 00:00@Phenomenon 也許是吧 我的資資歷尚淺不曉得緣由

xoy23208/14 06:10用pipe會不會比較好