Pythonic way to import module whose name is only known at runtime?
本问题已经有最佳答案,请猛点这里访问。
给定以下文件夹结构:
1 2 3 4 5 6 | executioner/: - executioner.py - library/: - __init__.py - global_functions.py - oakalleyit.py |
如果我想访问Global_functions.py或Oakalleyit.py中的函数,但是直到运行时我才知道函数或模块的名称,我该怎么做?
类似:
1 2 3 | from library import 'oakalleyit' 'oakalleyit'.'cleanup'() |
其中
您可以使用
1 2 | import library getattr(library, 'oakalleyit')() |
使用
1 2 3 4 5 | >>> import hashlib >>> getattr(hashlib, 'md5')() <md5 HASH object @ 0x1012a02b0> >>> getattr(hashlib, 'sha1')() <sha1 HASH object @ 0x1012a03f0> |
如果需要动态模块访问,则需要使用
1 2 3 4 | from importlib import import_module module = import_module('library.oakalleyit') getattr(module, 'some_function_name')() |