# pythonnet **Repository Path**: LGRef_GitHub/pythonnet ## Basic Information - **Project Name**: pythonnet - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-07-19 - **Last Updated**: 2020-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # pythonnet - Python for .NET [![Join the chat at https://gitter.im/pythonnet/pythonnet](https://badges.gitter.im/pythonnet/pythonnet.svg)](https://gitter.im/pythonnet/pythonnet?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![appveyor shield][]](https://ci.appveyor.com/project/pythonnet/pythonnet/branch/master) [![travis shield][]](https://travis-ci.org/pythonnet/pythonnet) [![codecov shield][]](https://codecov.io/github/pythonnet/pythonnet) [![coverity shield][]](https://scan.coverity.com/projects/pythonnet) [![license shield][]](./LICENSE) [![pypi package version][]](https://pypi.python.org/pypi/pythonnet) [![python supported shield][]](https://pypi.python.org/pypi/pythonnet) [![stackexchange shield][]](http://stackoverflow.com/questions/tagged/python.net) [![slack][]](https://pythonnet.slack.com) 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. ## Calling .NET code from Python Python for .NET allows CLR namespaces to be treated essentially as Python packages. ```python import clr from System import String from System.Collections import * ``` To load an assembly, use the `AddReference` function in the `clr` module: ```python import clr clr.AddReference("System.Windows.Forms") from System.Windows.Forms import Form ``` ## 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))` or `mod.func(args, 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.pi * 2` works, `2 * np.pi` doesn't. ### Example ```csharp static void Main(string[] args) { using (Py.GIL()) { dynamic np = Py.Import("numpy"); Console.WriteLine(np.cos(np.pi * 2)); dynamic sin = np.sin; Console.WriteLine(sin(5)); double c = np.cos(5) + sin(5); Console.WriteLine(c); dynamic a = np.array(new List { 1, 2, 3 }); Console.WriteLine(a.dtype); dynamic b = np.array(new List { 6, 5, 4 }, dtype: np.int32); Console.WriteLine(b.dtype); Console.WriteLine(a * b); Console.ReadKey(); } } ``` Output: ```c 1.0 -0.958924274663 -0.6752620892 float64 int32 [ 6. 10. 12.] ``` Information on installation, FAQ, troubleshooting, debugging, and projects using pythonnet can be found in the Wiki: https://github.com/pythonnet/pythonnet/wiki [appveyor shield]: https://img.shields.io/appveyor/ci/pythonnet/pythonnet/master.svg?label=AppVeyor [codecov shield]: https://img.shields.io/codecov/c/github/pythonnet/pythonnet/master.svg?label=Codecov [coverity shield]: https://img.shields.io/coverity/scan/7830.svg [license shield]: https://img.shields.io/badge/license-MIT-blue.svg?maxAge=3600 [pypi package version]: https://img.shields.io/pypi/v/pythonnet.svg [python supported shield]: https://img.shields.io/pypi/pyversions/pythonnet.svg [slack]: https://img.shields.io/badge/chat-slack-color.svg?style=social [stackexchange shield]: https://img.shields.io/badge/StackOverflow-python.net-blue.svg [travis shield]: https://img.shields.io/travis/pythonnet/pythonnet/master.svg?label=Travis