- Notifications
You must be signed in to change notification settings - Fork748
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.
License
pythonnet/pythonnet
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Python.NET is a package that gives Python programmers nearlyseamless integration with the .NET Common Language Runtime (CLR) andprovides a powerful application scripting tool for .NET developers. Itallows Python code to interact with the CLR, and may also be used toembed Python into a .NET application.
Note
The master branch of this repository tracks the ongoing development of version 3.0.Backports of patches to 2.5 are tracked in thebackports-2.5 branch.
Python.NET allows CLR namespaces to be treated essentially as Python packages.
importclrfromSystemimportStringfromSystem.Collectionsimport*
To load an assembly, use theAddReference
function in theclr
module:
importclrclr.AddReference("System.Windows.Forms")fromSystem.Windows.FormsimportForm
- You must set
Runtime.PythonDLL
property orPYTHONNET_PYDLL
environment variablestarting with version 3.0, otherwise you will receiveBadPythonDllException
(internal, derived fromMissingMethodException
) upon callingInitialize
.Typical values arepython38.dll
(Windows),libpython3.8.dylib
(Mac),libpython3.8.so
(most other Unix-like operating systems). - All calls to python should be inside a
using (Py.GIL()) {/* Your code here */}
block. - Import python modules using
dynamic mod = Py.Import("mod")
, thenyou can call functions as normal, egmod.func(args)
. - Use
mod.func(args, Py.kw("keywordargname", keywordargvalue))
ormod.func(args, keywordargname: keywordargvalue)
to apply keywordarguments. - All python objects should be declared as
dynamic
type. - Mathematical operations involving python and literal/managed typesmust have the python object first, eg.
np.pi * 2
works,2 * np.pi
doesn't.
staticvoidMain(string[]args){PythonEngine.Initialize();using(Py.GIL()){dynamicnp=Py.Import("numpy");Console.WriteLine(np.cos(np.pi*2));dynamicsin=np.sin;Console.WriteLine(sin(5));doublec=(double)(np.cos(5)+sin(5));Console.WriteLine(c);dynamica=np.array(newList<float>{1,2,3});Console.WriteLine(a.dtype);dynamicb=np.array(newList<float>{6,5,4},dtype:np.int32);Console.WriteLine(b.dtype);Console.WriteLine(a*b);Console.ReadKey();}}
Output:
1.0-0.958924274663-0.6752620892float64int32[6.10.12.]
Information on installation, FAQ, troubleshooting, debugging, andprojects using pythonnet can be found in the Wiki:
https://github.com/pythonnet/pythonnet/wiki
- Mailing list
- https://mail.python.org/mailman/listinfo/pythondotnet
- Chat
- https://gitter.im/pythonnet/pythonnet
This project is supported by the.NET Foundation.
About
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.
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.