The Wayback Machine - https://web.archive.org/web/20200130181718/https://github.com/pythonnet/pythonnet
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.
C# Python C Other
Branch: master
Clone or download
filmor Decref the members of Runtime(split from #958) (#1019)
* Decref the members of Runtime
* Unified GetBuiltins method
* Add explicit release action
Latest commit 3b938a5 Jan 22, 2020
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Fix paths in PULL_REQUEST_TEMPLATE.md Jan 22, 2017
ci Added CoreCLR 2.0 build target. Compile issues fixed. (#519) Sep 21, 2017
conda.recipe Bump all relevant versions to 2.4.0-rc2 Apr 7, 2019
demo WPF DynamicGrid python and XAML layout files (#280) Mar 23, 2017
src Merge branch 'master' into decref-types Jan 16, 2020
tools
.bumpversion.cfg Bump version: 2.3.0.→ 2.4.0.dev0 Mar 11, 2017
.editorconfig Fix refcnt errors (split from #958) (#1001) Dec 2, 2019
.gitignore Update .gitignore Feb 25, 2019
.mention-bot Update .mention-bot Mar 28, 2017
.travis.yml
AUTHORS.md Add mp_length slot for .NET classes implementing ICollection/ICollect… Dec 16, 2019
CHANGELOG.md Add mp_length slot for .NET classes implementing ICollection/ICollect… Dec 16, 2019
CONTRIBUTING.md Clean-up README/CONTRIBUTING Jan 14, 2017
LICENSE Update copyright year Apr 7, 2019
NuGet.config Convert all line endings to Unix format Nov 15, 2018
README.rst
appveyor.yml Add CI support for py3.8. (#988) Nov 19, 2019
pythonnet.15.sln Adds performance tests, that compare to published NuGet (#975) Oct 23, 2019
pythonnet.sln Revert changes to solution file Nov 15, 2018
requirements.txt
setup.cfg
setup.py Safe wheel import (#905) Jul 3, 2019
tox.ini Remove check-manifest Feb 14, 2017

README.rst

pythonnet - Python for .NET

Join the chat at https://gitter.im/pythonnet/pythonnet

appveyor shield travis shield codecov shield

license shield pypi package version conda-forge version python supported shield stackexchange shield

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

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<float> { 1, 2, 3 });
        Console.WriteLine(a.dtype);

        dynamic b = np.array(new List<float> { 6, 5, 4 }, dtype: np.int32);
        Console.WriteLine(b.dtype);

        Console.WriteLine(a * b);
        Console.ReadKey();
    }
}

Output:

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

Python 3.8.0 support

Some features are disabled in Python 3.8.0 because of this bug in Python. The error is System.EntryPointNotFoundException : Unable to find an entry point named 'Py_CompileString' in DLL 'python38'. This will be fixed in Python 3.8.1.

Resources

Mailing list: https://mail.python.org/mailman/listinfo/pythondotnet Chat: https://gitter.im/pythonnet/pythonnet

You can’t perform that action at this time.