Hi I have a directory in the same folder as my main script called 'actions' in this folder there are several scripts that may be used at any time by the main script. I am at the point where I have the name of the script in the form of a string in a variable called VAR (for the sake of example). I would like to be able to import this file using the variable.
3 Answers
If your aim is simply to execute the files, you can use
with open(filename) as f:
exec(compile(f.read(), filename, "exec"))
or the Python 2.x function execfile().
If you actually want to import the modules using the full import machinery, you need an __init__.py in the directory actions, and can use something like
module = __import__("actions.foo")
to import actions/foo.py.
3 Comments
importlib. But still, the likely scenario is that there's a design flaw here.Use the __import__ function
__import__(str)
1 Comment
2021 update:
Python3.9.5's __import__() includes this message:
Import a module. Because this function is meant for use by the Python interpreter and not for general use, it is better to use importlib.import_module() to programmatically import a module.
So it then becomes:
from importlib import import_module
import_module(modulename_or_relative_filename)
importorfrom ... importforms work for your use case? Trying to do dynamic imports almost always means there's a design flaw in your program.