Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
importing libraries
#3
You should use the module glob for this task: https://docs.python.org/3/library/glob.html
Or just use pathlib: https://docs.python.org/3/library/pathlib.html
And for importing, importlib: https://docs.python.org/3/library/importlib.html


I guess you want to have something like a plugin directory and your script should load them dynamically.
But this is only the half work. Somewhere you've to register this loaded plugins, to announce them in your
main program.


import glob
import importlib
import pathlib

# without pathlib
# using module glob
plugindirectory = 'plugins'
loaded_plugin_modules = []
for file in glob.glob1(plugindirectory, '*.py'):
    stem, suffix = file.rsplit('.', 1)
    to_import = 'plugins.{}'.format(stem)
    print('Importing:', to_import)
    module = importlib.import_module(to_import)
    loaded_plugin_modules.append(module)

print(loaded_plugin_modules)


# with pathlib
print('Using pathlib.Path')
plugindirectory = pathlib.Path('plugins')
loaded_plugin_modules = []
for file in plugindirectory.glob('*.py'):
    to_import = 'plugins.{}'.format(file.stem)
    print('Importing:', to_import)
    module = importlib.import_module(to_import)
    loaded_plugin_modules.append(module)

print(loaded_plugin_modules)

Instead of using stem, suffix = file.rsplit('.', 1), you can use also stem, suffix = os.path.splitext(file)
Almost dead, but too lazy to die: https://sourceserver.info
All humans together. We don't need politicians!
Reply


Messages In This Thread
importing libraries - by u18sc11 - Jul-26-2017, 11:23 AM
RE: importing libraries - by sparkz_alot - Jul-26-2017, 12:33 PM
RE: importing libraries - by DeaD_EyE - Jul-26-2017, 02:34 PM
RE: importing libraries - by nilamo - Jul-26-2017, 05:05 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Create a Tensor without importing any modules or libraries samW 1 2,640 Sep-21-2020, 06:29 AM
Last Post: DPaul

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020