看板 Soft_Job 關於我們 聯絡資訊
板上各位大大好 最近工作有接觸到 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.cc), 來自: 111.243.30.121 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1628781494.A.6E7.html
devilkool: 我不懂為什麼要這麼麻煩...... 08/13 01:35
orangeterry: PTVS可以同時debug python和c# 08/13 02:29
laputaflutin: 為什麼不把.net保成一個服務讓外部python直接call? 08/13 05:27
jinmin88: 為什麼不用json格式來做序列化跟反序列化來交換就好? 08/13 09:42
herrowui: 其中一邊做成webapi給另一邊呼叫應該比較容易吧! 08/13 10:29
Murasaki0110: json protobuf這些去decouple 08/13 10:30
Phenomenon: 未看先猜最原本的 code 就這樣寫,後來加功能的就複 08/13 11:03
Phenomenon: 製一樣的模式繼續寫,最後就大到改不動了。 08/13 11:03
fundamental: 謝謝 我找時間試一下^^@orangeterry 08/13 23:33
fundamental: @laputaflutin 有些是包成 dll 讓 python call 但 08/13 23:38
fundamental: UI 在 .NET做完 Python 某些行為還得把資料拿回 UI 08/13 23:38
fundamental: 08/13 23:38
fundamental: @jinmin88 變數可以存沒問題,但兩種語言型別不同的 08/13 23:49
fundamental: 問題會建議怎麼處理呢? 08/13 23:49
fundamental: @Murasaki0110 非常感謝,認識了一個厲害的東西! 08/13 23:58
fundamental: @Phenomenon 也許是吧 我的資資歷尚淺不曉得緣由 08/14 00:00
xoy232: 用pipe會不會比較好 08/14 06:10