Python: Import Every Module From A Folder?
Solution 1:
If transforming the folder itself in a module, through the use of a __init__.py
file and using from <foldername> import *
suits you, you can iterate over the folder contents
with "os.listdir" or "glob.glob", and import each file ending in ".py" with the __import__
built-in function:
import osfor name inos.listdir("plugins"):
if name.endswith(".py"):
#strip the extension
module = name[:-3]
# set the module name in the current global name space:
globals()[module] = __import__(os.path.join("plugins", name)
The benefit of this approach is: it allows you to dynamically pass the module names to __import__
- while the ìmport statement needs the module names to be hardcoded, and it allows you to check other things about the files - maybe size, or if they import certain required modules, before importing them.
Solution 2:
Create a file named
__init__.py
inside the folder and import the folder name like this:
>>>from <folder_name> import * #Try to avoid importing everything when you can>>>from <folder_name> import module1,module2,module3 #And so on
Solution 3:
You might want to try that project: https://gitlab.com/aurelien-lourot/importdir
With this module, you only need to write two lines to import all plugins from your directory and you don't need an extra __init__.py
(or any other other extra file):
import importdir
importdir.do("plugins/", globals())
Post a Comment for "Python: Import Every Module From A Folder?"