Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Call Python from .NET

I have some code written in Python which can not be transferred to a .NET language. I need to call one of these functions from my .NET WinForms application.

Now, I do it by starting the Python script as a separate process and pass parameters to it as command line arguments. It works, but I don't really like this solution. I'd like to improve it to a better one.

Is there any better way to call a function of a .py script from a .NET application? What is the best way to do it?

Note: IronPython is NOT an option for this Python script

like image 498
Tom Avatar asked Jul 08 '11 12:07

Tom


People also ask

Can .NET run Python?

Python.NET is a package that gives Python programmers nearly seamless integration with the . NET 4.0+ Common Language Runtime (CLR) on Windows and Mono runtime on Linux and OSX. Python for . NET provides a powerful application scripting tool for .

Can I use Python in asp net?

The end result is that ASP.NET can help you write web applications faster and with less code—and it can do this even better once we add Python to the mix! The IronPython team has released a project enabling the use of IronPython within ASP.NET.

What is Python for .NET called?

IronPython is an implementation of the Python programming language targeting the . NET Framework and Mono.


1 Answers

This might be a lot more work than launching the Python process, but here's an alternate solution.

You can embed Python into another program. The API is for C and Interop from .NET will probably be a major pain. If you're into a bit of a safer way to handle the native Python API, you can look into Boost.Python, which, among its less advertised features, has support for embedding.

With these tools, you can write a C++ managed DLL that uses Boost.Python to load the Python interpreter and execute any Python script. Thus, you can execute any Python code directly in the hosting process, eliminating the use of an external process and any form of IPC.

Edit: AFAIK, all you have to add to your installation procedure is the deployment of the Python DLL and Boost.Python DLL.

like image 118
André Caron Avatar answered Oct 07 '22 20:10

André Caron