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.

Github stars Tracking Chart

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.

.. code-block::

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

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

.. code-block::

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


.. code-block:: 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<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:

.. code::

   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 <https://bugs.python.org/issue37633>`_. 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.

.., Join the chat at https://gitter.im/pythonnet/pythonnet, image:: https://badges.gitter.im/pythonnet/pythonnet.svg
   :target: https://gitter.im/pythonnet/pythonnet?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
.., appveyor shield, image:: https://img.shields.io/appveyor/ci/pythonnet/pythonnet/master.svg?label=AppVeyor
   :target: https://ci.appveyor.com/project/pythonnet/pythonnet/branch/master
.., travis shield, image:: https://img.shields.io/travis/pythonnet/pythonnet/master.svg?label=Travis
   :target: https://travis-ci.org/pythonnet/pythonnet
.., codecov shield, image:: https://img.shields.io/codecov/c/github/pythonnet/pythonnet/master.svg?label=Codecov
   :target: https://codecov.io/github/pythonnet/pythonnet
.., license shield, image:: https://img.shields.io/badge/license-MIT-blue.svg?maxAge=3600
   :target: ./LICENSE
.., pypi package version, image:: https://img.shields.io/pypi/v/pythonnet.svg
   :target: https://pypi.python.org/pypi/pythonnet
.., python supported shield, image:: https://img.shields.io/pypi/pyversions/pythonnet.svg
   :target: https://pypi.python.org/pypi/pythonnet
.., stackexchange shield, image:: https://img.shields.io/badge/StackOverflow-python.net-blue.svg
   :target: http://stackoverflow.com/questions/tagged/python.net
.., conda-forge version, image:: https://img.shields.io/conda/vn/conda-forge/pythonnet.svg
   :target: https://anaconda.org/conda-forge/pythonnet

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

Main metrics

Overview
Name With Ownerpythonnet/pythonnet
Primary LanguageC#
Program languagePython (Language Count: 4)
Platform
License:MIT License
所有者活动
Created At2013-11-27 13:42:20
Pushed At2025-04-27 15:29:37
Last Commit At2025-04-14 20:12:49
Release Count30
Last Release Namev3.0.5 (Posted on 2024-12-13 09:29:44)
First Release Name1.0 (Posted on )
用户参与
Stargazers Count5.1k
Watchers Count153
Fork Count750
Commits Count2k
Has Issues Enabled
Issues Count1530
Issue Open Count143
Pull Requests Count544
Pull Requests Open Count14
Pull Requests Close Count183
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private