【发布时间】:2017-11-23 14:11:50
【问题描述】:
我有这个结构:
project/
sources/
__init__.py
source_one.py
source_teo.py
main.py
然后在main.py
import sources
# Here I'd like to get a list with [source_one, source_two]
然后动态导入它们。
有没有办法得到这个?
编辑
我从dir(sources)得到什么:
如果我这样做import sources,我会得到['__author__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__']
如果我这样做from sources import *,我会得到['__author__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__']
如果我这样做from sources import source_one,我会得到['__author__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 'source_one']
但是,我不知道sources 包中的文件名,这只是一个例子。我怎样才能找到它们?
【问题讨论】:
-
from sources import *不起作用? -
@RaminNietzsche 使用
*我可以使用source_one和source_teo。在此示例中,但我不知道sources中将包含什么文件,因此,我不能按名称使用它们,我需要在列表中动态地获取它们。 -
dir(sources)应该告诉你里面有什么,source1 = __import__("source1", fromlist=(sources,))应该做剩下的事情 -
@RaminNietzsche:除非
sources投入额外的工作来支持它,否则这实际上是行不通的。从包中导入*不会自动加载其子模块。
标签: python python-import python-module