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.
Перейти к файлу
Victor Uriarte 02a8a348e8 Update LICENSE year & include in recipe 2017-02-21 20:03:49 -07:00
.github Fix paths in PULL_REQUEST_TEMPLATE.md 2017-01-22 04:08:13 -07:00
ci Allow private env:var to force conda build 2017-02-21 12:07:02 -07:00
conda.recipe Update LICENSE year & include in recipe 2017-02-21 20:03:49 -07:00
demo Format setup, geninterop, demo 2017-01-26 19:13:18 -07:00
src Relocate Embedded tests fixtures 2017-02-21 14:22:02 -07:00
tools Clean-up getinterop 2017-01-30 13:34:59 -07:00
.editorconfig Add .editorconfig 2017-01-08 17:00:45 -05:00
.gitignore Add Coverity badge 2017-02-17 09:01:52 -07:00
.travis.yml Standardize Python.Test fixture location 2017-02-20 19:44:20 -08:00
AUTHORS.md Update AUTHORS 2017-02-21 12:24:29 -07:00
CHANGELOG.md Clean-up CHANGELOG 2017-02-20 15:44:26 -07:00
CONTRIBUTING.md Clean-up README/CONTRIBUTING 2017-01-14 15:44:34 -07:00
LICENSE Update LICENSE year & include in recipe 2017-02-21 20:03:49 -07:00
Python.Runtime.dll.config Cleanup/Comment Python.Runtime.dll.config & travis 2017-02-14 13:42:57 -07:00
README.md Add Coverity badge 2017-02-17 09:01:52 -07:00
appveyor.yml Quiet AppVeyor pip/nuget installs 2017-02-21 12:07:02 -07:00
pythonnet.sln Add PY3 project/sln configs 2017-02-02 11:32:47 -07:00
requirements.txt Use Codecov report flags 2017-02-16 19:32:51 -07:00
setup.cfg Add requirements.txt and pytest options 2017-02-16 19:26:14 -07:00
setup.py Update version (#379) 2017-02-15 12:29:11 -07:00
tox.ini Remove check-manifest 2017-02-14 04:55:04 -07:00

README.md

pythonnet - Python for .NET

appveyor shield travis shield codecov shield coverity shield

license shield pypi package version python supported shield stackexchange shield slack

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.

import clr
from System import String
from System.Collections import *

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

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)) 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

static void Main(string[] args)
{
    using (Py.GIL())
    {
        dynamic np = Py.Import("numpy");
        dynamic sin = np.sin;
        Console.WriteLine(np.cos(np.pi*2));
        Console.WriteLine(sin(5));
        double c = np.cos(5) + sin(5);
        Console.WriteLine(c);
        /* this block is temporarily disabled due to regression #249
        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();
    }
}

Output:

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