importing a module when the module name is in a variable

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

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x