- Notifications
You must be signed in to change notification settings - Fork301
Implementation of Python 3.x for .NET Framework that is built on top of the Dynamic Language Runtime.
License
IronLanguages/ironpython3
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
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!
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 | |
Downloads | |
Help |
To see how to use in PowerShell (either directly embedded or executable invocation), skip toInstallation
The following C# program:
usingSystem.Windows.Forms;MessageBox.Show("Hello World!","Greetings",MessageBoxButtons.OKCancel);
can be written in IronPython as follows:
importclrclr.AddReference("System.Windows.Forms")fromSystem.Windows.FormsimportMessageBox,MessageBoxButtonsMessageBox.Show("Hello World!","Greetings",MessageBoxButtons.OKCancel)
Here is an example how to call Python code from a C# program.
vareng=IronPython.Hosting.Python.CreateEngine();varscope=eng.CreateScope();eng.Execute(@"def greetings(name): return 'Hello ' + name.title() + '!'",scope);dynamicgreetings=scope.GetVariable("greetings");System.Console.WriteLine(greetings("world"));
This example assumes thatIronPython
has been added to the C# project as a NuGet package.
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.
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:
- What's New In Python 3.0
- What's New In Python 3.1
- What's New In Python 3.2
- What's New In Python 3.3
- What's New In Python 3.4
- What's New In Python 3.5
- What's New In Python 3.6
For details on contributing see theContributing article.
For details on upgrading from IronPython 2 to 3 see theUpgrading from IronPython 2 to 3 article.
While compatibility with CPython is one of our main goals with IronPython 3, there are still some differences that may cause issues. SeeDifferences from CPython for details.
See thePackage compatibility document for information on compatibility with popular packages.
Binaries of IronPython 3 can be downloaded from therelease page, available in various formats:.msi
,.zip
,.deb
,.pkg
. The IronPython package is also available onNuGet. See theinstallation document for detailed instructions on how to install a standalone IronPython interpreter on various operating systems and .NET frameworks.
For usage in PowerShell, you can install using the Install-IronPython.ps1 within the aforementioned.zip
file or by simply using this one-liner:
& ([scriptblock]::Create((iwr`-Uri'https://raw.githubusercontent.com/IronLanguages/ironpython3/main/eng/scripts/Install-IronPython.ps1').Content))`-Path"~/ipyenv/v3.4.2"# Optionally, ensure pip:# & "~/ipyenv/v3.4.2/ipy" -m ensurepip
Once installed, you can start using IronPython directly in PowerShell!
To use the ipy shim, you can use:
&"~/ipyenv/v3.4.2/Enter-IronPythonEnvironment.ps1"ipy-c"print('Hello from IronPython!')"
... or to use IronPython embedded in PowerShell, you can use:
Import-Module"~/ipyenv/v3.4.2/IronPython.dll"$engine=& {$engine= [IronPython.Hosting.Python]::CreateEngine()# You need to add the correct paths, as IronPython will use PowerShell's installation path by default$paths=$engine.GetSearchPaths()$paths.Add("$(Resolve-Path"~/ipyenv/v3.4.2/lib")")$paths.Add("$(Resolve-Path"~/ipyenv/v3.4.2/lib/site-packages")")# To use `wpf` and `sqlite3` you have to add the DLLs search path# - the [IronPython.SQLite] and [IronPython.WPF] powershell namespaces will become available on python import$paths.Add("$(Resolve-Path"~/ipyenv/v3.4.2/DLLs")")# or if you prefer to have the powershell namespaces early, you can use:# - just note, you will have to initialize _sqlite3 (see further down the script)# Import-Module "~/ipyenv/v3.4.2/DLLs/IronPython.SQLite.dll"# Import-Module "~/ipyenv/v3.4.2/DLLs/IronPython.WPF.dll"$engine.SetSearchPaths($paths)# Then have fun!$engine.Execute("print('Hello from IronPython!')")# Optionally, if you need to initialize _sqlite3:# $engine.Execute("import sqlite3")return$engine}
See thebuilding document. Since the main development is on Windows, bugs on other platforms may inadvertently be introduced - please report them!
IronPython 3 targets .NET Framework 4.6.2, .NET Standard 2.0, .NET 6.0 and .NET 8.0. The support for .NET and .NET Core follow the lifecycle defined on.NET and .NET Core Support Policy.
About
Implementation of Python 3.x for .NET Framework that is built on top of the Dynamic Language Runtime.
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.