All Projects → pythonnet → Pythonnet

pythonnet / Pythonnet

Licence: mit
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.

Programming Languages

python
139335 projects - #7 most used programming language
C#
18002 projects
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Pythonnet

clr-loader
Loader for different .NET runtimes
Stars: ✭ 16 (-99.44%)
Mutual labels:  ffi, clr
profiler-api
The portable version of JetBrains profiler API for .NET Framework / .NET Core / .NET / .NET Standard / Mono
Stars: ✭ 21 (-99.27%)
Mutual labels:  mono, clr
Uno
Build Mobile, Desktop and WebAssembly apps with C# and XAML. Today. Open source and professionally supported.
Stars: ✭ 6,029 (+109.85%)
Mutual labels:  hacktoberfest, mono
DotNET.jl
Julia ❤️ .NET
Stars: ✭ 75 (-97.39%)
Mutual labels:  ffi, clr
Uno.ch9
Ch9 - Uno Reference Implementation project
Stars: ✭ 45 (-98.43%)
Mutual labels:  hacktoberfest, mono
Python Telegram Bot
We have made you a wrapper you can't refuse
Stars: ✭ 17,209 (+498.99%)
Mutual labels:  hacktoberfest
Vue Croppie
Vue wrapper for croppie
Stars: ✭ 228 (-92.06%)
Mutual labels:  hacktoberfest
Bypass Paywalls Chrome
Bypass Paywalls web browser extension for Chrome and Firefox.
Stars: ✭ 20,876 (+626.63%)
Mutual labels:  hacktoberfest
Server
☁️ Nextcloud server, a safe home for all your data
Stars: ✭ 17,723 (+516.88%)
Mutual labels:  hacktoberfest
Ten Hands
⚡ Simplest way to organize and run command-line tasks
Stars: ✭ 228 (-92.06%)
Mutual labels:  hacktoberfest
Django Security
A collection of models, views, middlewares, and forms to help secure a Django project.
Stars: ✭ 228 (-92.06%)
Mutual labels:  hacktoberfest
Kubectl Rolesum
Summarize Kubernetes RBAC roles for the specified subjects.
Stars: ✭ 228 (-92.06%)
Mutual labels:  hacktoberfest
Roslyn
The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.
Stars: ✭ 15,296 (+432.41%)
Mutual labels:  hacktoberfest
Smallest Secured Golang Docker Image
Create the smallest and secured golang docker image based on scratch
Stars: ✭ 229 (-92.03%)
Mutual labels:  hacktoberfest
Radare2
UNIX-like reverse engineering framework and command-line toolset
Stars: ✭ 15,412 (+436.44%)
Mutual labels:  hacktoberfest
Helm Charts
Stars: ✭ 229 (-92.03%)
Mutual labels:  hacktoberfest
Pouchdb
🐨 - PouchDB is a pocket-sized database.
Stars: ✭ 14,625 (+409.05%)
Mutual labels:  hacktoberfest
Django Sockpuppet
Build reactive applications with the django tooling you already know and love.
Stars: ✭ 225 (-92.17%)
Mutual labels:  hacktoberfest
React Native Art Doc
📒 Unofficial documentation for react-native ART module.
Stars: ✭ 229 (-92.03%)
Mutual labels:  hacktoberfest
Archie
A minimal Hugo Theme
Stars: ✭ 226 (-92.13%)
Mutual labels:  hacktoberfest

pythonnet - Python.NET

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

gh shield

license shield

pypi package version conda-forge version python supported shield

nuget preview shield nuget release shield

Python.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.

Note

The master branch of this repository tracks the ongoing development of version 3.0. Backports of patches to 2.5 are tracked in the backports-2.5 branch.

Calling .NET code from Python

Python.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

  • You must set Runtime.PythonDLL property or PYTHONNET_PYDLL environment variable starting with version 3.0, otherwise you will receive BadPythonDllException (internal, derived from MissingMethodException) upon calling Initialize. Typical values are python38.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"), 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 = (double)(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.]

Resources

Information on installation, FAQ, troubleshooting, debugging, and projects 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

.NET Foundation

This project is supported by the .NET Foundation.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].