10000 GitHub - QuantConnect/pythonnet at 4e33d08c0f5458a536eacf567dd7054ccc6da154
[go: up one dir, main page]

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.

License

Notifications You must be signed in to change notification settings
  • Insights
  • QuantConnect/pythonnet

    Repository files navigation

    pythonnet - Python for .NET

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

    appveyor shield travis shield codecov shield coverity shield

    license shield pypi package version python supported shield stackexchange shield slack

    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

    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.

    Resources

    License

    Stars

    Watchers

    Forks

    Packages

    No packages published

    Languages

    • C# 82.6%
    • Python 16.9%
    • C 0.5%
    0