C#.NET与托管Python的互操作性(CPython)>有什么问题吗?

2024-05-14 23:34:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在设计一个应用程序。核心应该用C编写,但是我还想使用一些已经完成的CPython模块(非托管的)。在

所以我对互操作性很感兴趣(从C调用CPython方法,从CPython调用C)。如果有问题,因为C在.NET运行时(托管)中运行,而CPython直接不受管理。在

我已经和谷歌调查过这个问题,并给出了以下解决方案:

  • 通过DLR+“CPython extension”+可能是“IronClad”使用IronPython,并从IronPython调用CPython模块,反之亦然->;这些模块是托管执行还是非托管执行?如果我想使用CPython中的C类和方法,有什么问题吗?在
  • 使用“Python for.NET”->;与上面相同的问题。在

你觉得怎样,哪种方式更好?或者你有别的办法吗?在

最后一个但可能是最重要的问题,我是否正确理解了上述几点,还是我搞砸了?在

非常感谢!!在


Tags: 模块方法gt应用程序核心fornet方式
2条回答

通过COM公开Python代码并从C调用它。在这条大街上(两条路)走了很多次。在

我想你误解了Python。这是一种解释语言。您只需提供文本源文件,解释器就会执行它们。在

Python语言和CPython、IronPython、Jython、pypyy等实现有区别。它们都试图尽可能准确地实现Python语言,同时还添加了特定于实现的功能。这就像C++编译器是如何用C++编写的。在

例如,任何(纯)Python文件都可以由IronPython解释器执行。但是如果您知道要使用IronPython,那么可以使用允许您进入.NET库的特殊IronPython特性。在

现在,大多数Python不使用任何特定于实现的功能,所以使用什么来运行它并不重要。不过,有些Python是这样的。在

1好吧,它被编译成.pyc文件。。。但无论如何,“编译”并不是一个定义明确的术语。在


这对你有什么关系?好吧,你有一堆Python源代码,你想在.netframework中使用。如果该代码不使用任何CPython特定的特性,比如使用C扩展模块,那么您可以在IronPython中运行它。在

相关问题 更多 >

    热门问题