☀️
Dynamo Solved

Migrating Dynamo Python scripts from IronPython2 to CPython3 in Revit 2025

bimusers.com
bimusers.com API Specialist • 327 pts
126 views 1 answers
Technical Context
SoftwareRevit 2025
Language / APIPython
Reported ErrorModuleNotFoundError: No module named CommonLanguageRuntime

With Revit 2025 upgrading to .NET 8, IronPython 2 is deprecated in Dynamo 3.0+. When running our office batch parameter scrips, we get syntax and import errors.

What is the recommended header pattern for CPython3 in Dynamo?

1 Answers

ACCEPTED SOLUTION
bimusers
bimusers API Specialist 1 week ago

In CPython3, CLR loading and generic list handling change slightly. Use this standard header:

import clr
import sys

# Add Revit API assemblies
clr.AddReference('RevitAPI')
clr.AddReference('RevitServices')

from Autodesk.Revit.DB import *
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication

# Ensure output is wrapped properly
OUT = 'CPython3 Ready'

Also remember: range() returns a generator in Python 3, so wrap with list(range(...)) when passing back to Dynamo nodes!