Revit 2020 and 2021 not loading in 6.5.4 update

Hello, I updated pyRevit from 6.5.3 to latest 6.5.4 update. It is loading as usual in Revit 2022+, but when I open Revit 2021 and Revit 2020, it is showing error at launch of Revit.

Even after fresh install, pyRevit doesn’t load. Even though I disabled new pyRevit loader, it is not working in Revit 2021 and Revit 2020.

[Window Title]
PyRevitLoader - Error Loading pyRevit

[Main Instruction]
IronPython Traceback:
Traceback (most recent call last):
  File "C:\Users\dewanand\AppData\Roaming\pyRevit-Master\bin\netfx\engines\pyRevitLoader.py", line 37, in <module>
  File "C:\Users\dewanand\AppData\Roaming\pyRevit-Master\pyrevitlib\pyrevit\loader\sessionmgr.py", line 27, in <module>
  File "C:\Users\dewanand\AppData\Roaming\pyRevit-Master\pyrevitlib\pyrevit\loader\uimaker.py", line 13, in <module>
  File "C:\Users\dewanand\AppData\Roaming\pyRevit-Master\pyrevitlib\pyrevit\coreutils\ribbon.py", line 18, in <module>
  File "C:\Users\dewanand\AppData\Roaming\pyRevit-Master\pyrevitlib\pyrevit\revit\__init__.py", line 53, in <module>
  File "C:\Users\dewanand\AppData\Roaming\pyRevit-Master\pyrevitlib\pyrevit\revit\tmpgfx.py", line 32, in <module>
AttributeError: 'type' object has no attribute 'TemporaryGraphicsHandlerService'

Script Executor Traceback:
System.MissingMemberException: 'type' object has no attribute 'TemporaryGraphicsHandlerService'
   at IronPython.Runtime.Binding.MetaPythonType.FastGetBinderHelper.ErrorBinder.Target(CodeContext context, Object self, Object& result)
   at IronPython.Runtime.Types.TypeGetBase.RunDelegatesNoOptimize(Object self, CodeContext context)
   at System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0,T1,TRet](CallSite site, T0 arg0, T1 arg1)
   at IronPython.Compiler.Ast.DynamicGetMemberExpression.GetMemberInstruction.Run(InterpretedFrame frame)
   at Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
   at Microsoft.Scripting.Interpreter.LightLambda.Run1[T0,TRet](T0 arg0)
   at IronPython.Compiler.RuntimeScriptCode.InvokeTarget(Scope scope)
   at IronPython.Runtime.PythonContext.InitializeModule(String fileName, ModuleContext moduleContext, ScriptCode scriptCode, ModuleOptions options)
   at IronPython.Runtime.Importer.LoadModuleFromSource(CodeContext context, String name, String path)
   at IronPython.Runtime.Importer.LoadFromDisk(CodeContext context, String name, String fullName, String str)
   at IronPython.Runtime.Importer.ImportFromPathHook(CodeContext context, String name, String fullName, List path, Func`5 defaultLoader)
   at IronPython.Runtime.Importer.ImportFromPath(CodeContext context, String name, String fullName, List path)
   at IronPython.Runtime.Importer.ImportNestedModule(CodeContext context, PythonModule module, String[] parts, Int32 current, List path)
   at IronPython.Runtime.Importer.ImportFrom(CodeContext context, Object from, String name)
   at IronPython.Modules.Builtin.__import__(CodeContext context, String name, Object globals, Object locals, Object fromlist, Int32 level)
   at IronPython.Runtime.Importer.ImportLightThrow(CodeContext context, String fullName, PythonTuple from, Int32 level)
   at Microsoft.Scripting.Interpreter.FuncCallInstruction`5.Run(InterpretedFrame frame)
   at Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
   at Microsoft.Scripting.Interpreter.LightLambda.Run1[T0,TRet](T0 arg0)
   at IronPython.Compiler.RuntimeScriptCode.InvokeTarget(Scope scope)
   at IronPython.Runtime.PythonContext.InitializeModule(String fileName, ModuleContext moduleContext, ScriptCode scriptCode, ModuleOptions options)
   at IronPython.Runtime.Importer.LoadModuleFromSource(CodeContext context, String name, String path)
   at IronPython.Runtime.Importer.LoadFromDisk(CodeContext context, String name, String fullName, String str)
   at IronPython.Runtime.Importer.ImportFromPathHook(CodeContext context, String name, String fullName, List path, Func`5 defaultLoader)
   at IronPython.Runtime.Importer.ImportFromPath(CodeContext context, String name, String fullName, List path)
   at IronPython.Runtime.Importer.ImportNestedModule(CodeContext context, PythonModule module, String[] parts, Int32 current, List path)
   at IronPython.Runtime.Importer.ImportModuleFrom(CodeContext context, Object from, String[] parts, Int32 current)
   at IronPython.Runtime.Importer.ImportModule(CodeContext context, Object globals, 

I thought the support for pre-Revit 2021 versions will drop in next pyRevit 7 release!

Overlooked sideeffect of TemporaryGraphicsHandler API wrapper, which is only part of 2022 and up…

You could try to comment out or delete this line:

File "C:\Users\dewanand\AppData\Roaming\pyRevit-Master\pyrevitlib\pyrevit\revit\__init__.py", line 53, in <module>

Removed the particular line, it loads successfully.