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星跟踪图

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

主要指标

概览
名称与所有者pythonnet/pythonnet
主编程语言C#
编程语言Python (语言数: 4)
平台
许可证MIT License
所有者活动
创建于2013-11-27 13:42:20
推送于2025-04-27 15:29:37
最后一次提交2025-04-14 20:12:49
发布数30
最新版本名称v3.0.5 (发布于 2024-12-13 09:29:44)
第一版名称1.0 (发布于 )
用户参与
星数5.1k
关注者数153
派生数750
提交数2k
已启用问题?
问题数1530
打开的问题数143
拉请求数544
打开的拉请求数14
关闭的拉请求数183
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?