importing a module when the module name is in a variable [duplicate]
Possible Duplicate:
Dynamic module import in Python
I am writing a small script that gets the name of a file from a directory and passes this to another module which then imports the file.
so the flow is like 1) get module name ( store it in a variable) 2) pass this variable name to a module 3) import the module whose name is stored in the variable name
my code is like
data_files = [x[2] for x in os.walk(os.path.dirname(sys.argv[0]))]
hello = data_files[0]
modulename = hello[0].split(".")[0]
import modulename
the problem is when it reaches the import statement, it reads modulename as a real module name and not the value stored in this variable. I am unsure about how this works in python, any help on solving this problem would be great
You want the built in __import__
function
new_module = __import__(modulename)
importlib is probably the way to go. The documentation on it is here. It's generally preferred over __import__
for most uses.
In your case, you would use:
import importlib
module = importlib.import_module(module_name, package=None)