Python 多重导入

目录结构如下:

├─Solution
│  │─Module
│  │   ├─Submodule
│  │   │  │─__init__.py
│  │   │  └─submodule.py
│  │   └─module.py
│  │──main.py

其中 module.py 需要可以在命令行单独运行,使用了 if __name__=="__main__": 读取参数然后再传给其 main

main.pyfrom Module import module
module.pyfrom Submodule import submodule
预期使用方法是 module.main(args)

报错如下:

Traceback (most recent call last):
  File "main.py", line 1, in <module>
    from Module import module
  File "module.py", line 21, in <module>
    from Submodule import submodule
ImportError: No module named 'Submodule'

main.py 放到 Module 目录下可以导入,感觉是路径的问题……不知道有没有不用 sys 的方法,不胜感激

阅读 3.6k
1 个回答

那么直接导入是没有问题的:

from Module import module

而运行时,module.py的环境是main.py同级环境,因此:

from Module.Submodule import submodule

当然,为了避免如此麻烦,可以通过相对导入:

shell> touch Solution/Module/__init__.py
shell> vim module.py
      from .Submodule import submodule
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题