Skip to content

Implementation of Python 3.x for .NET Framework that is built on top of the Dynamic Language Runtime.

License

Notifications You must be signed in to change notification settings

IronLanguages/ironpython3

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

1e616f7 · Nov 8, 2024
Nov 5, 2024
Jul 2, 2024
Jun 29, 2024
Jul 2, 2024
Jul 2, 2024
Nov 8, 2024
Nov 8, 2024
Dec 20, 2022
Jul 2, 2024
Nov 23, 2020
Jun 7, 2020
Jun 29, 2024
Sep 15, 2023
Oct 9, 2022
Feb 17, 2022
Jul 12, 2023
Dec 10, 2022
Jul 2, 2024
Jul 9, 2018
Mar 16, 2019
Sep 15, 2023
Sep 14, 2022
Feb 19, 2021
Mar 14, 2022
Aug 30, 2023
Feb 19, 2021
Apr 22, 2021
Apr 24, 2024
Jul 2, 2024

Repository files navigation

IronPython 3

There is still much that needs to be done to support Python 3.x. We are working on it, albeit slowly. We welcome all those who would like to help!

Official Website

IronPython is an open-source implementation of the Python programming language that is tightly integrated with .NET. IronPython can use .NET and Python libraries, and other .NET languages can use Python code just as easily.

IronPython 3 targets Python 3, including the re-organized standard library, Unicode strings, and all of the other new features.

What? Where?
Windows/Linux/macOS Builds Build status Github build status
Downloads NuGet Release
Help Gitter chat StackExchange

Examples

The following C# program:

using System.Windows.Forms;

MessageBox.Show("Hello World!", "Greetings", MessageBoxButtons.OKCancel);

can be written in IronPython as follows:

import clr
clr.AddReference("System.Windows.Forms")
from System.Windows.Forms import MessageBox, MessageBoxButtons

MessageBox.Show("Hello World!", "Greetings", MessageBoxButtons.OKCancel)

Here is an example how to call Python code from a C# program.

var eng = IronPython.Hosting.Python.CreateEngine();
var scope = eng.CreateScope();
eng.Execute(@"
def greetings(name):
    return 'Hello ' + name.title() + '!'
", scope);
dynamic greetings = scope.GetVariable("greetings");
System.Console.WriteLine(greetings("world"));

This example assumes that IronPython has been added to the C# project as a NuGet package.

Code of Conduct

This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community. For more information see the .NET Foundation Code of Conduct.

State of the Project

The current target is Python 3.4, although features and behaviors from later versions may be included.

See the following lists for features from each version of CPython that have been implemented:

Contributing

For details on contributing see the Contributing article.

Upgrading from IronPython 2

For details on upgrading from IronPython 2 to 3 see the Upgrading from IronPython 2 to 3 article.

Differences with CPython

While compatibility with CPython is one of our main goals with IronPython 3, there are still some differences that may cause issues. See Differences from CPython for details.

Package compatibility

See the Package compatibility document for information on compatibility with popular packages.

Installation

Binaries of IronPython 3 can be downloaded from the release page, available in various formats: .msi, .zip, .deb, .pkg. The IronPython package is also available on NuGet. See the installation document for detailed instructions on how to install a standalone IronPython interpreter on various operating systems and .NET frameworks.

Build

See the building document. Since the main development is on Windows, bugs on other platforms may inadvertently be introduced - please report them!

Supported Platforms

IronPython 3 targets .NET Framework 4.6.2, .NET Standard 2.0 and .NET 6.0. The support for .NET and .NET Core follow the lifecycle defined on .NET and .NET Core Support Policy.