开发者

How to add a python binding to C#?

开发者 https://www.devze.com 2023-01-22 15:14 出处:网络
When you want to call C from python开发者_运维问答, you write a module like this: http://docs.python.org/extending/extending.html

When you want to call C from python开发者_运维问答, you write a module like this:

http://docs.python.org/extending/extending.html

Now, I have a question:

I want to write a module for use in Python with C#.

How can I get C# to interact with native Python ?

(Note: I'm not interested in Python.NET or IronPython).


I know you are probably not gonna like this answer, but honestly: write it in C++, using boost::python or directly in Cython.

It'd be possible to write an extension using C#, but you'd have to convert the data structures used by Python, import a good deal of the Python C API, marshal everything back and forth between managed and unmanaged code, map object lifetimes between both Python's and C#'s garbage collector etc., which is most likely just not worth it.

You would also induce a dependency on the .NET framework, loose platform independence (probably even with Mono) while in general providing little benefit.

If you want to consume C# assemblies in CPython, your best bet actually is pywin32's win32com module on the Python side, and COM Interop on the .NET side. It allows you to expose your C# objects as COM classes with a few added attributes at the source level and easily import them into Python as objects, with events and everything. I had a lot of success integrating both platforms that way.

0

精彩评论

暂无评论...
验证码 换一张
取 消