[讨论] 在 .NET 使用 Pythonnet 的应用情境

楼主: fundamental (呵呵呵呵呵)   2021-08-12 23:18:12
板上各位大大好
最近工作有接触到 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 是在什么情境会需要?
这种程式开发方法会是主流吗? 谢谢~
作者: devilkool (对猫毛过敏的猫控)   2021-08-13 01:35:00
我不懂为什么要这么麻烦......
作者: orangeterry (bghnbytnytn)   2021-08-13 02:29:00
PTVS可以同时debug python和c#
作者: laputaflutin (很恐怖,不要问)   2021-08-13 05:27:00
为什么不把.net保成一个服务让外部python直接call?
作者: jinmin88 (昼伏夜出)   2021-08-13 09:42:00
为什么不用json格式来做序列化跟反序列化来交换就好?
作者: herrowui (帝虎改)   2021-08-13 10:29:00
其中一边做成webapi给另一边呼叫应该比较容易吧!
作者: Murasaki0110 (麦当劳欢乐送)   2021-08-13 10:30:00
json protobuf这些去decouple
作者: Phenomenon (Kuma)   2021-08-13 11:03:00
未看先猜最原本的 code 就这样写,后来加功能的就复制一样的模式继续写,最后就大到改不动了。
楼主: fundamental (呵呵呵呵呵)   2021-08-13 23:33:00
谢谢 我找时间试一下^^@orangeterry@laputaflutin 有些是包成 dll 让 python call 但UI 在 .NET做完 Python 某些行为还得把资料拿回 UI@jinmin88 变量可以存没问题,但两种语言型别不同的问题会建议怎么处理呢?@Murasaki0110 非常感谢,认识了一个厉害的东西!@Phenomenon 也许是吧 我的资资历尚浅不晓得缘由
作者: xoy232 (鬼岛希特勒)   2021-08-14 06:10:00
用pipe会不会比较好

Links booklink

Contact Us: admin [ a t ] ucptt.com