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
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
You want the built in __import__ function
new_module = __import__(modulename)
Method 2
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)
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0