With Revit(2022) or Civil3D(2022), It is now possible to use 2 Python engines in Dynamo
IronPython2 (target Python 2.7)
CPython3 with Pythonnet Bridge (target Python 3.7+)
From Dynamo 2.7 onwards, you now have the option of using either IronPython2 (Which has historically been in Dynamo) or the new CPython3 - available as different engines on each Python node which compute using either Python 2 or Python 3 code respectively. Note - you can use both versions in a single graph.
From Dynamo 2.11 onwards, CPython3 will be the both the default engine and officially supported Python engine inside of Dynamo. You will be able to access IronPython2 via the Package Manager on a per-user basis.
Beyond the difference between Python 2 and Python 3, there are some differences with the .NET 4.0+ Common Language Runtime (CLR) integration:
IronPython2 → IronPython (more detail here) IronPython is a .NET native Implementation of Python for .NET Framework that is built on top of the Dynamic Language Runtime.
CPython3 → Python.NET (more detail here) Python for .NET is a package that gives Python programmers nearly seamless integration with the .NET Common Language Runtime (CLR)
What are you planning? (eventually)
I plan to migrate completely to CPython3/Pythonnet
I plan to stay on IronPython
I plan to use the 2 engines (mainly IronPython)
I plan to use the 2 engines (mainly CPython3/Pythonnet)
one should not see IronPython and CPython/PythonNet as competitors, each have different qualities
In my opinion the advantages of CPython3 is enough that staying with the old is foolhardy after a point. Moving past Python 2 should eventually be a goal for everyone - locking a larger package (say Genius Loci, or Clockwork) down to 2 at the next release and starting to develop only on 3 makes sense to me.
Surely everything NEW is going to be made with CPython 3.
My only concern would be the given time to us, package developers, to migrate all of our EXISTED nodes to CPython3…
For example my package consists of almost 700 custom nodes, and more than 500 dyn graphs, many which uses Ironpython 2.
We would eventually move to CPython3, but it will take years… 4 or 5 at least in my side, as I will progressively migrate/test nodes in each update, and it’s really hard work.
@Karam_Baki, totally agree with you.
The power of Dynamo is speed of graphs development. So any good packages matter.
Especially great ones, like Synthesize and many more. Many authors won’t update their,
many packages are abandoned but working good!
One advantage of using CPython now in Dynamo is an ability to use native Python Packages from PyPi repo.
The IronPython 2.7 is 10 about years old now, but it works stable. If we’ll able to install Python Packages in IronPython 3.4 it will be great. Doesn’t matter, as Dynamo package or main solution.