【发布时间】:2011-03-22 21:34:42
【问题描述】:
我的目录结构如下:
| main.py
| scripts
|--| __init__.py
| script1.py
| script2.py
| script3.py
从main.py 导入模块scripts。我尝试将pkgutils.walk_packages 与__all__ 结合使用,但使用它,我只能使用from scripts import * 直接导入main 下的所有子模块。我想把它们都放在scripts 下。导入scripts 的所有子模块以便我可以从main 访问scripts.script1 的最干净的方法是什么?
编辑:对不起,我有点含糊。我想在运行时导入子模块而不在__init__.py 中明确指定它们。我可以使用pkgutils.walk_packages 来获取子模块名称(除非有人知道更好的方法),但我不确定使用这些名称(或者可能是walk_packages 返回的 ImpImporters?)的最简洁方式来导入它们。
【问题讨论】:
-
如果您将应用程序部署为压缩鸡蛋,pkgutil 会工作吗?你可以看看“import pkg_resources”,以防万一
-
我对这个问题和答案感到非常困惑。为什么这完全需要。我的理解是,您有两个选项可以在 python 中包含所有本地“模块”(其他语言仅称为文件。a)您在每个文件夹中都包含一个空白初始化文件,并且 ALONE 告诉 python 这是一个模块文件夹并在运行之前将其全部导入或 b) 为避免到处都有 init 文件,您在文件顶部放置一个序言以将所有内容添加到路径中。还有其他注意事项,例如 IDE 中的代码导航。