I have written a script for XBMC which optionally downloads a dll and then imports a module that depends on that dll if the download was successful. However, placing the import inside a function generates a Python syntax warning. Simplified example:
1  def importIfPresent():
2      if chkFunction() is True:
3          from myOptionModule import *
Line 3 generates the warning, but doesn't stop the script. I can't place this code at the start outside of a function because I need to generate dialog boxes to prompt the download and then hash the file once it is downloaded to check success. I also call this same code at startup in order to check if the user has already downloaded the dll.
Is there a different/better way to do this without generating the syntax warning? Or should I just ignore the warning and leave it as is?
Thank you! Using the useful responses below, I now have:
import importlib
myOptionalModule = None
def importIfPresent():
    if chkFunction is True:
        try:
            myOptionalModule = importlib.import_module('modulex')
        except ImportError:
            myOptionalModule = None
...
importIfPresent()
...
def laterFunction():
    if myOptionalModule != None:
        myParam = 'something expected'
        myClass = getattr(myOptionalModule, 'importClassName')
        myFunction = getattr(myClass, 'functionName')
        result = myFunction(myClass(), myParam)
    else:
        callAlternativeMethod()
I am posting this back mainly to share with other beginners like myself the way I learned through the discussion to use the functionality of a module imported this way instead of the standard import statement. I'm sure that there are more elegant ways of doing this that the experts will share as well...