Skip to content

Python for .NET is a package that gives Python programmers nearly seamless integration with the .NET Common Language Runtime (CLR) and provides a powerful application scripting tool for .NET developers.

License

Notifications You must be signed in to change notification settings

aeroaks/pythonnet

Repository files navigation

pythonnet

Python for .NET is a package that gives Python programmers nearly seamless integration with the .NET Common Language Runtime (CLR) and provides a powerful application scripting tool for .NET developers. It allows Python code to interact with the CLR, and may also be used to embed Python into a .NET application.

Build Status

Build status

Calling .NET code from Python

Python for .NET allows CLR namespaces to be treated essentially as Python packages.

importclrfromSystemimportStringfromSystem.Collectionsimport*

To load an assembly, use the "AddReference" function in the "clr" module:

importclrclr.AddReference("System.Windows.Forms") fromSystem.Windows.FormsimportForm

Embedding Python in .NET

  • All calls to python should be inside a "using (Py.GIL()){/* Your code here */}" block.
  • Import python modules using dynamic mod = Py.Import("mod"), then you can call functions as normal, eg mod.func(args).
  • Use mod.func(args, Py.kw("keywordargname", keywordargvalue)) to apply keyword arguments.
  • All python objects should be declared as 'dynamic' type.
  • Mathematical operations involving python and literal/managed types must have the python object first, eg np.pi2 works, 2np.pi doesn't

EG:

staticvoidMain(string[]args){using(Py.GIL()){dynamicnp=Py.Import("numpy");dynamicsin=np.sin;Console.WriteLine(np.cos(np.pi*2));Console.WriteLine(sin(5));doublec=np.cos(5)+sin(5);Console.WriteLine(c);/* this block is temporarily disabled due to regression dynamic a = np.array(new List<float>{1, 2, 3 }); dynamic b = np.array(new List<float>{6, 5, 4 }, Py.kw("dtype", np.int32)); Console.WriteLine(a.dtype); Console.WriteLine(b.dtype); Console.WriteLine(a * b); */Console.ReadKey();}}

outputs:

1.0 -0.958924274663 -0.6752620892 float64 int32 [ 6. 10. 12.] 

About

Python for .NET is a package that gives Python programmers nearly seamless integration with the .NET Common Language Runtime (CLR) and provides a powerful application scripting tool for .NET developers.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C#68.0%
  • Python30.2%
  • Other1.8%