这是我的文件层次结构:
|--main.py
|--package/
|--__init__.py
|--a.py
|--b.py
现在我想做的是这样的:
# main.py
from package import *
print(package.a.MyClass)
print(package.b.my_function)
所以基本上我希望它自动导入package
包中的所有内容。这可能吗?我宁愿不必手动编写导入,因为我希望它是“将文件拖放到此处,就算完成了”的系统。
我建议使用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]))
注意:这未经测试,但应该给您一个大概的想法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句