这是我的文件层次结构:
|--main.py
|--package/
|--__init__.py
|--a.py
|--b.py
现在我想做的是这样的事情:
# main.py
from package import *
print(package.a.MyClass)
print(package.b.my_function)
所以基本上我希望它能自动导入package
包中的所有内容。
这可能吗?
我宁愿不必手动编写导入,因为我希望它是"将文件拖放到此处并且您已完成"一种制度。
答案 0 :(得分:2)
我建议使用Python的pkgutil.iter_modules
示例:强>
import pkgutil
for module_loader, name, ispkg in pkgutil.iter_modules(["/path/to/module"]):
...
您对迭代子模块的处理取决于用户。
另一种常用的方法是使用pkg_resources,您也可以查看,我相信setuptools
的一部分 更新:天真的做法是使用__import__
和os.lsitdir()
:
import os
def load_modules(pkg):
for filename in os.listdir(os.path.dirname(pkg.__file__)):
if filename.endswith(".py"):
m = __import__("{}.{}".format(pkg.__name__, os.path.splitext(filename)[0]))
NB:这未经过测试,但应该为您提供粗略的想法。