【发布时间】:2015-07-30 10:08:07
【问题描述】:
现状:
-
我有一个脚本:
program.py。 -
我有一个目录:
/imports。其中子目录中包含任意数量的模块。 -
正在使用 Python 的包目录语法。
__init__.py program.py /imports __init__.py /module a __init__.py other_files.py /module b __init__.py other
-
program.py应该导入/imports中的每个子目录。 -
program.py需要对模块的对象访问。例如,imports['name'].Service()。
现有代码:
import os
modules = []
IMPORT_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'imports')
to_import = [name for name in os.listdir(IMPORT_PATH) if os.path.isdir(os.path.join(IMPORT_PATH, name))]
modules = [__import__('imports.' + x) for x in to_import]
print modules
输出:
[<module 'imports' from '/code/test/imports/__init__.pyc'>, <module 'imports' from '/code/test/imports/__init__.pyc'>]
期望的输出:
[<module 'B' from '/code/test/imports/B'>, <module 'C' from '/code/test/imports/C'>]
【问题讨论】:
-
import x 不起作用,因为 import 不带变量。尝试
__import__或使用importlib.import_module