在模块中获取模块-Python
我有这样的结构:在模块中获取模块-Python,python,python-import,python-module,Python,Python Import,Python Module,我有这样的结构: 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] 然后按平分制进口 有什么办法得到这个吗 编辑 我从目录(源代码)获得的信息: 如果我导入源代码,我会得到[
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]
然后按平分制进口
有什么办法得到这个吗
编辑
我从目录(源代码)
获得的信息:
如果我导入源代码,我会得到[“\uuuu作者”、“\uu内置文件”、“\uu文档”、“\uu文件”、“\uu名称”、“\uu包”、“\uu路径”]
如果我从源代码导入*我会得到
[“\uuuu author\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
如果我从源代码导入源代码,我会得到[“作者”,“内置”,“文档”,“文件”,“名称”,“包”,“路径”,“源代码”]
但是,我不知道sources
包中的文件名,这只是一个例子。如何找到它们?您应该相对于当前文件位置导入
例如:
from sources.source\u一个导入类sourceone
从源导入*
在示例2中,您只能通过_module.ClassName的名称_调用这些类
也可以使用动态导入,如下所示:
另外,我建议只导入您使用的类/模块,这就是我建议的原因
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]))
从源代码导入*
不起作用?使用*
可能重复@raminietzsche我可以使用源代码和源代码。在这个例子中,我不知道sources
中会有什么文件,因此,如果我不能按名称使用它们,我需要在列表中以友好的方式获取它们。dir(sources)
应该告诉您其中有什么,并且source1=\u导入(“source1”,fromlist=(sources,))
应执行以下操作rest@RaminNietzsche:除非sources
投入额外的工作来支持它,否则这实际上不起作用。从包导入*
不会自动加载其子模块。谢谢,但是我不知道sources
中python文件的名称,这就是为什么它应该动态工作的原因。要使用source\u one
中的类,只调用sources
->sources。Class\u in\u source\u one
我需要添加from\u one导入Class\u in\u source\u one
in\u init\u.py>。但是,再一次,我不知道sources