[Python.NET] Embedding a Python interactive shell in a .NET application
nilsc.becker at gmail.com
Tue May 17 06:33:24 EDT 2016
a while ago I wrote something like a light wrapper around Python.NET to
embed CPython with numpy/scipy in a .NET GUI. It manages local/global
dictionaries, automatically converts simple data types and numpy
arrrays<->C# arrays and provides a plotting widget in C# that shows
matplotlib plots. It also has some other convenience functions.
The code is by no means complete, fully tested or even nice. However, for
me it works.
I uploaded it to github: https://github.com/Lodomir/PythonInterface
As it demonstrates some not-well documented use of Python.NET, I thought it
maybe nice to share the code.
You will need to add the references to Python.NET to build the main project
(PythonInterface) and additionally to the PythonInterface-DLL to build the
2016-05-13 22:04 GMT+02:00 Denis Akhiyarov <denis.akhiyarov at gmail.com>:
> for embedding look at c# embedding unit tests and also here:
> 1. Old API:
> 2. New simplified API using dynamic:
> On Thu, May 12, 2016 at 4:16 PM, Saparya K <spryify at gmail.com> wrote:
>> Thanks for your response, Denis.
>> I had not come across Sho earlier. It looks very interesting. (If only
>> Python 3.x support was available, though it does look like they have added
>> support for their own math and visualization libraries).
>> I am going over the demos and the unit tests and I was able to write a
>> simple console application to access .NET objects from Python. This is very
>> I am still figuring out how to embed Python code in my C# WinForms
>> application (instead of a console application).
>> I will continue my experiments, but in the meantime if you or anyone else
>> has any ideas on how to redirect the result from the Python interpreter
>> (say, to a rich text box), I would love to hear them. That is one part of
>> the puzzle that is unclear to me.
>> On Wed, May 11, 2016 at 4:01 PM, Denis Akhiyarov <
>> denis.akhiyarov at gmail.com> wrote:
>>> This is definitely possible with WinForms or WPF. See the demo folder in
>>> pythonnet repo. One of the demo's is still in pull request.
>>> You should probably just try running previous IronPython attempts using
>>> pythonnet and report issues if any. Have a look at Sho from Microsoft.
>>> There is someone trying to embed ipython REPL using pythonnet/Excel-DNA
>>> or COM in Excel with Custom Task Pane (CTP) written in WinForms:
>>> On Wed, May 11, 2016 at 4:44 PM, Saparya K <spryify at gmail.com> wrote:
>>>> Hello PythonNet,
>>>> I am looking to embed a Python interactive (REPL) shell in a .NET
>>>> WinForms application.
>>>> This C# application displays a graphical visualization of some data.
>>>> Methods to manipulate the data in the C# application would be exposed via a
>>>> Python API.
>>>> The idea is to be able to interact with the data from the Python shell
>>>> via the API, and thereby updating the graphical view.
>>>> Ideally, the shell should support any valid Python syntax that is
>>>> required to use the API. This would involve:
>>>> 1. Querying a collection of data from the application via the
>>>> Python API
>>>> 2. Then manipulating this collection in the Python shell
>>>> 3. Making API calls with the modified collection as an argument
>>>> I came across a few examples where an interactive shell was developed
>>>> using IronPython. A limitation with this approach is the absence of *Python
>>>> 3.x* support (and other C-compiled libraries) in IronPython. For this
>>>> reason, I would prefer to use Python.NET if it is possible.
>>>> Has anyone here tried something like this with Python.NET before? Does
>>>> it looks like what I am trying to achieve is feasible?
>>>> Any direction would be very helpful!
>>>> Python.NET mailing list - PythonDotNet at python.org
>>> Python.NET mailing list - PythonDotNet at python.org
>> Python.NET mailing list - PythonDotNet at python.org
> Python.NET mailing list - PythonDotNet at python.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the PythonDotNet