我正在设计一个应用程序。 Core应该用C#编写,但我也想使用一些已经完成的CPython模块(非托管)。
所以我对互操作性感兴趣(从C#调用CPython方法和从CPython调用C#)。如果有问题,因为C#在.NET运行时(托管)中运行,而CPython直接在未管理的情况下运行。
我已经与Google调查了这个问题,并提出了这些解决方案:
您怎么看?哪种方式会更好?或者你有其他解决方案吗?
最后但也许是最重要的问题,我是否理解上述观点,或者我是否搞砸了?
非常感谢提前!!
答案 0 :(得分:2)
我认为你误解了Python。它是一种解释为 1 的语言。您只需提供文本源文件,解释器就会执行它们。
语言 Python和实现 CPython,IronPython,Jython,PyPy之间存在差异,你有什么。他们每个人都尝试尽可能准确地实现Python语言,同时还添加了特定于实现的功能。这就像C#编译器是用C ++编写的那样。
例如,任何(纯)Python文件都可以由IronPython解释器执行。但是如果你知道你将使用IronPython,你可以使用特殊的IronPython功能,让你进入.NET库。
现在,大多数Python不使用任何特定于实现的功能,因此使用它来运行它并不重要。但是有些Python会这样做。
1 好吧,它被编译成.pyc文件......但是“编译”无论如何都不是一个定义明确的术语。
为什么这对你很重要?好吧,你有一堆Python源代码要与.NET框架一起使用。如果该代码不使用任何特定于CPython的功能 - 例如使用C扩展模块 - 那么您可以在IronPython中运行它。
答案 1 :(得分:1)
通过COM公开您的Python代码并从C#调用它。多次使用这种途径(两种方式)。