获取模块中的模块 - Python
Get modules in a module - Python
我有这个结构:
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.source_one import ClassSourceOne
from sources import *
例2中,只能通过name_of_module.ClassName
调用类
或者您可以使用动态导入,如下所示:import dynamicly from package
此外,我建议只导入您使用的 classes/modules,这就是我推荐
的原因
from module import Class
并且不使用 import *
所以它也导入所有模块依赖项
这是一种技巧 ;) 但有效:
import os
fileslist = os.listdir("sources")
for item in fileslist:
if item.endswith("py") and item != "__init__.py":
exec ("from sources.%s import *" %(item.split('.')[0]))
我有这个结构:
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.source_one import ClassSourceOne
from sources import *
例2中,只能通过name_of_module.ClassName
调用类
或者您可以使用动态导入,如下所示:import dynamicly from package
此外,我建议只导入您使用的 classes/modules,这就是我推荐
的原因from module import Class
并且不使用 import *
所以它也导入所有模块依赖项
这是一种技巧 ;) 但有效:
import os
fileslist = os.listdir("sources")
for item in fileslist:
if item.endswith("py") and item != "__init__.py":
exec ("from sources.%s import *" %(item.split('.')[0]))