Python 引用带有部分路径的模块

Python refer to module with partial path

我有这个目录结构:

├── package1
│   ├── __init__.py
│   └── package2
│       ├── __init__.py
│       └── module2.py
└── script.py

script.py 文件如下所示:

import package1.package2.module2
import package1.package2

if __name__ == '__main__':
    package1.package2.module2.run()  # This works
    package2.module2.run()           # This fails

执行失败并出现此错误,NameError:未定义名称 'package2'。

如何更改代码,使 package2.module2 被识别为导入的模块?

script.py 因期望 package2 名称突然出现而被窃听 - 显示的导入语句仅将名称 package1 引入命名空间。

它可以改用 from package1 import package2,这样 package2 就在命名空间中。在这种情况下,单独导入 module2.

最典型的是单个导入语句:

from package1.package2.module2 import run

if __name__ == "__main__":
    run()