importing a module when the module name is in a variable

PythonPython 2.7

Python Problem Overview


> 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

Python Solutions


Solution 1 - Python

You want the built in __import__ function

new_module = __import__(modulename)

Solution 2 - Python

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)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser1801279View Question on Stackoverflow
Solution 1 - PythonmgilsonView Answer on Stackoverflow
Solution 2 - PythonmunkView Answer on Stackoverflow