Import all scm modules at the beginning, but let it fail silently
Then import them again when needed, but let them raise an exception
This ensures that only actually needed scm modules will produce error
when missing while it keeps the module availbe across the script.
Python also checks for us not to import the module twice.